From 890040ed2b8f82b87856ea7001248bb9c6007256 Mon Sep 17 00:00:00 2001 From: TZGyn Date: Wed, 10 Apr 2024 19:24:03 +0800 Subject: [PATCH] separate schema and relations into different files --- frontend/src/lib/db/relations.ts | 56 ++++++++++++++++++++++++++++++++ frontend/src/lib/db/schema.ts | 49 +--------------------------- 2 files changed, 57 insertions(+), 48 deletions(-) create mode 100644 frontend/src/lib/db/relations.ts diff --git a/frontend/src/lib/db/relations.ts b/frontend/src/lib/db/relations.ts new file mode 100644 index 0000000..75dfecb --- /dev/null +++ b/frontend/src/lib/db/relations.ts @@ -0,0 +1,56 @@ +import { relations } from 'drizzle-orm' +import { + project, + session, + setting, + shortener, + user, + visitor, +} from './schema' + +export const shortenerRelations = relations( + shortener, + ({ one, many }) => ({ + user: one(user, { + fields: [shortener.userId], + references: [user.id], + }), + project: one(project, { + fields: [shortener.projectId], + references: [project.id], + }), + visitor: many(visitor), + }), +) + +export const projectRelations = relations( + project, + ({ one, many }) => ({ + user: one(user, { + fields: [project.userId], + references: [user.id], + }), + shortener: many(shortener), + }), +) + +export const visitorRelations = relations(visitor, ({ one }) => ({ + shortener: one(shortener, { + fields: [visitor.shortenerId], + references: [shortener.id], + }), +})) + +export const sessionRelations = relations(session, ({ one }) => ({ + user: one(user, { + fields: [session.userId], + references: [user.id], + }), +})) + +export const settingRelations = relations(setting, ({ one }) => ({ + user: one(user, { + fields: [setting.userId], + references: [user.id], + }), +})) diff --git a/frontend/src/lib/db/schema.ts b/frontend/src/lib/db/schema.ts index cb23a7b..c833e2d 100644 --- a/frontend/src/lib/db/schema.ts +++ b/frontend/src/lib/db/schema.ts @@ -8,8 +8,6 @@ import { boolean, } from 'drizzle-orm/pg-core' -import { relations, type InferSelectModel } from 'drizzle-orm' - export const shortener = pgTable('shortener', { id: serial('id').primaryKey().notNull(), link: varchar('link', { length: 255 }).notNull(), @@ -22,21 +20,6 @@ export const shortener = pgTable('shortener', { projectId: integer('project_id'), }) -export const shortenerRelations = relations( - shortener, - ({ one, many }) => ({ - user: one(user, { - fields: [shortener.userId], - references: [user.id], - }), - project: one(project, { - fields: [shortener.projectId], - references: [project.id], - }), - visitor: many(visitor), - }), -) - export const project = pgTable('project', { id: serial('id').primaryKey().notNull(), uuid: uuid('uuid').defaultRandom(), @@ -44,17 +27,6 @@ export const project = pgTable('project', { userId: integer('user_id').notNull(), }) -export const projectRelations = relations( - project, - ({ one, many }) => ({ - user: one(user, { - fields: [project.userId], - references: [user.id], - }), - shortener: many(shortener), - }), -) - export const user = pgTable('user', { id: serial('id').primaryKey().notNull(), uuid: uuid('uuid').defaultRandom(), @@ -82,13 +54,6 @@ export const visitor = pgTable('visitor', { os: varchar('os', { length: 255 }), }) -export const visitorRelations = relations(visitor, ({ one }) => ({ - shortener: one(shortener, { - fields: [visitor.shortenerId], - references: [shortener.id], - }), -})) - export const session = pgTable('session', { id: varchar('id', { length: 255 }).primaryKey(), userId: integer('user_id').notNull(), @@ -98,22 +63,10 @@ export const session = pgTable('session', { }).notNull(), }) -export const sessionRelations = relations(session, ({ one }) => ({ - user: one(user, { - fields: [session.userId], - references: [user.id], - }), -})) - export const setting = pgTable('setting', { userId: integer('user_id').notNull(), qr_background: varchar('qr_background', { length: 7 }), qr_foreground: varchar('qr_foreground', { length: 7 }), }) -export const settingRelations = relations(setting, ({ one }) => ({ - user: one(user, { - fields: [setting.userId], - references: [user.id], - }), -})) +export * from './relations'