Home / File/ tables.ts — drizzle-orm Source File

tables.ts — drizzle-orm Source File

Architecture documentation for tables.ts, a typescript file in the drizzle-orm codebase. 2 imports, 1 dependents.

File typescript DrizzleORM RelationalQuery 2 imports 1 dependents 8 functions

Entity Profile

Dependency Diagram

graph LR
  931dc543_40fe_480a_552e_6df25afd3185["tables.ts"]
  690f7dfc_0aea_9ee8_d6e7_26bbb3689031["drizzle-orm"]
  931dc543_40fe_480a_552e_6df25afd3185 --> 690f7dfc_0aea_9ee8_d6e7_26bbb3689031
  25248a9d_ba06_2b33_4421_8575da2f9c34["sqlite-core"]
  931dc543_40fe_480a_552e_6df25afd3185 --> 25248a9d_ba06_2b33_4421_8575da2f9c34
  39b12012_73ee_50de_e31a_969162d619ed["db.ts"]
  39b12012_73ee_50de_e31a_969162d619ed --> 931dc543_40fe_480a_552e_6df25afd3185
  style 931dc543_40fe_480a_552e_6df25afd3185 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { relations } from 'drizzle-orm';
import { foreignKey, int, integer, sqliteTable, text } from 'drizzle-orm/sqlite-core';

export const users = sqliteTable('users', {
	id: integer('id').primaryKey(),
	name: text('name').notNull(),
	cityId: int('city_id').references(() => cities.id).notNull(),
	homeCityId: int('home_city_id').references(() => cities.id),
	createdAt: integer('created_at', { mode: 'timestamp' }).notNull(),
});
export const usersConfig = relations(users, ({ one, many }) => ({
	city: one(cities, { relationName: 'UsersInCity', fields: [users.cityId], references: [cities.id] }),
	homeCity: one(cities, { fields: [users.homeCityId], references: [cities.id] }),
	posts: many(posts),
	comments: many(comments),
}));

export const cities = sqliteTable('cities', {
	id: integer('id').primaryKey(),
	name: text('name').notNull(),
});
export const citiesConfig = relations(cities, ({ many }) => ({
	users: many(users, { relationName: 'UsersInCity' }),
}));

export const posts = sqliteTable('posts', {
	id: integer('id').primaryKey(),
	title: text('title').notNull(),
	authorId: int('author_id').references(() => users.id),
});
export const postsConfig = relations(posts, ({ one, many }) => ({
	author: one(users, { fields: [posts.authorId], references: [users.id] }),
	comments: many(comments),
}));

export const comments = sqliteTable('comments', {
	id: integer('id').primaryKey(),
	postId: int('post_id').references(() => posts.id).notNull(),
	authorId: int('author_id').references(() => users.id),
	text: text('text').notNull(),
});
export const commentsConfig = relations(comments, ({ one }) => ({
	post: one(posts, { fields: [comments.postId], references: [posts.id] }),
	author: one(users, { fields: [comments.authorId], references: [users.id] }),
}));

export const books = sqliteTable('books', {
	id: integer('id').primaryKey(),
	name: text('name').notNull(),
});
export const booksConfig = relations(books, ({ many }) => ({
	authors: many(bookAuthors),
}));

export const bookAuthors = sqliteTable('book_authors', {
	bookId: int('book_id').references(() => books.id).notNull(),
	authorId: int('author_id').references(() => users.id).notNull(),
	role: text('role').notNull(),
});
export const bookAuthorsConfig = relations(bookAuthors, ({ one }) => ({
	book: one(books, { fields: [bookAuthors.bookId], references: [books.id] }),
	author: one(users, { fields: [bookAuthors.authorId], references: [users.id] }),
}));

export const node = sqliteTable('node', {
	id: integer('id').primaryKey(),
	parentId: int('parent_id'),
	leftId: int('left_id'),
	rightId: int('right_id'),
}, (node) => ({
	fk1: foreignKey(() => ({ columns: [node.parentId], foreignColumns: [node.id] })),
	fk2: foreignKey(() => ({ columns: [node.leftId], foreignColumns: [node.id] })),
	fk3: foreignKey(() => ({ columns: [node.rightId], foreignColumns: [node.id] })),
}));
export const nodeRelations = relations(node, ({ one }) => ({
	parent: one(node, { fields: [node.parentId], references: [node.id] }),
	left: one(node, { fields: [node.leftId], references: [node.id] }),
	right: one(node, { fields: [node.rightId], references: [node.id] }),
}));

Domain

Subdomains

Dependencies

  • drizzle-orm
  • sqlite-core

Frequently Asked Questions

What does tables.ts do?
tables.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain, RelationalQuery subdomain.
What functions are defined in tables.ts?
tables.ts defines 8 function(s): bookAuthorsConfig, booksConfig, citiesConfig, commentsConfig, node, nodeRelations, postsConfig, usersConfig.
What does tables.ts depend on?
tables.ts imports 2 module(s): drizzle-orm, sqlite-core.
What files import tables.ts?
tables.ts is imported by 1 file(s): db.ts.
Where is tables.ts in the architecture?
tables.ts is located at integration-tests/tests/relational/tables.ts (domain: DrizzleORM, subdomain: RelationalQuery, directory: integration-tests/tests/relational).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free