export const users = authSchema.table('users', {
id: uuid('id').notNull().primaryKey(),
email: varchar('email').notNull(),
});
export const usersToHouseholds = pgTable(
'users_to_households',
{
id: uuid('id').notNull().primaryKey().defaultRandom(),
userId: uuid('user_id').notNull(),
householdId: text('household_id').notNull().references(() => households.id, { onDelete: 'cascade' }),
},
);
export const usersToHouseholdsRelations = relations(usersToHouseholds, ({ one }) => ({
user: one(users, {
fields: [usersToHouseholds.userId],
references: [users.id],
}),
household: one(households, {
fields: [usersToHouseholds.householdId],
references: [households.id],
})
}));
export const usersHouseholds = relations(users, ({ many }) => ({
households: many(usersToHouseholds)
}));
export const householdUsers = relations(households, ({ many }) => ({
users: many(usersToHouseholds)
}));
export const households = pgTable(
'households',
{
id: text('id').primaryKey().$defaultFn(() => ulid()),
name: text('name').notNull(),
createdAt: date('created_at').notNull().defaultNow()
},
// Creating an index on the name as we will search on it.
({ name }) => ({
name: index('name_index').on(name)
})
);
export const users = authSchema.table('users', {
id: uuid('id').notNull().primaryKey(),
email: varchar('email').notNull(),
});
export const usersToHouseholds = pgTable(
'users_to_households',
{
id: uuid('id').notNull().primaryKey().defaultRandom(),
userId: uuid('user_id').notNull(),
householdId: text('household_id').notNull().references(() => households.id, { onDelete: 'cascade' }),
},
);
export const usersToHouseholdsRelations = relations(usersToHouseholds, ({ one }) => ({
user: one(users, {
fields: [usersToHouseholds.userId],
references: [users.id],
}),
household: one(households, {
fields: [usersToHouseholds.householdId],
references: [households.id],
})
}));
export const usersHouseholds = relations(users, ({ many }) => ({
households: many(usersToHouseholds)
}));
export const householdUsers = relations(households, ({ many }) => ({
users: many(usersToHouseholds)
}));
export const households = pgTable(
'households',
{
id: text('id').primaryKey().$defaultFn(() => ulid()),
name: text('name').notNull(),
createdAt: date('created_at').notNull().defaultNow()
},
// Creating an index on the name as we will search on it.
({ name }) => ({
name: index('name_index').on(name)
})
);