this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 107 lines 2.6 kB view raw
1import { relations } from "drizzle-orm"; 2import { 3 boolean, 4 index, 5 integer, 6 pgTable, 7 primaryKey, 8 text, 9 timestamp, 10 varchar, 11} from "drizzle-orm/pg-core"; 12 13import { user } from "./auth-schema"; 14 15export * from "./auth-schema"; 16 17export const group = pgTable("group", { 18 id: integer().primaryKey().generatedAlwaysAsIdentity(), 19 userId: text() 20 .notNull() 21 .references(() => user.id, { onDelete: "cascade" }), 22 name: varchar({ length: 255 }).notNull(), 23 description: text(), 24 invite: varchar({ length: 12 }).notNull().unique(), 25}); 26 27export const voucher = pgTable( 28 "voucher", 29 { 30 id: integer().primaryKey().generatedAlwaysAsIdentity(), 31 groupId: integer() 32 .notNull() 33 .references(() => group.id, { onDelete: "cascade" }), 34 name: varchar({ length: 255 }).notNull(), 35 description: text(), 36 }, 37 (t) => [index("voucher_group_idx").on(t.groupId)], 38); 39 40export const member = pgTable( 41 "member", 42 { 43 groupId: integer() 44 .notNull() 45 .references(() => group.id, { onDelete: "cascade" }), 46 userId: text() 47 .notNull() 48 .references(() => user.id, { onDelete: "cascade" }), 49 }, 50 (t) => [ 51 primaryKey({ columns: [t.groupId, t.userId] }), 52 index("member_user_idx").on(t.userId), 53 ], 54); 55 56export const setting = pgTable("setting", { 57 userId: text() 58 .primaryKey() 59 .references(() => user.id, { onDelete: "cascade" }), 60 notify: boolean().notNull().default(true), 61}); 62 63export const redemption = pgTable( 64 "redemption", 65 { 66 id: integer().primaryKey().generatedAlwaysAsIdentity(), 67 voucherId: integer() 68 .notNull() 69 .references(() => voucher.id, { onDelete: "cascade" }), 70 userId: text() 71 .notNull() 72 .references(() => user.id, { onDelete: "cascade" }), 73 date: timestamp().defaultNow().notNull(), 74 }, 75 (t) => [index("redemption_user_idx").on(t.userId)], 76); 77 78export const groupRelations = relations(group, ({ many, one }) => ({ 79 members: many(member), 80 owner: one(user, { 81 fields: [group.userId], 82 references: [user.id], 83 }), 84})); 85 86export const memberRelations = relations(member, ({ one, many }) => ({ 87 group: one(group, { 88 fields: [member.groupId], 89 references: [group.id], 90 }), 91 user: one(user, { 92 fields: [member.userId], 93 references: [user.id], 94 }), 95 redemptions: many(redemption), 96})); 97 98export const redemptionRelations = relations(redemption, ({ one }) => ({ 99 voucher: one(voucher, { 100 fields: [redemption.voucherId], 101 references: [voucher.id], 102 }), 103 member: one(member, { 104 fields: [redemption.userId], 105 references: [member.userId], 106 }), 107}));