feat: update database schema to support item trading
This commit is contained in:
@@ -72,12 +72,28 @@ export const transactions = pgTable('transactions', {
|
||||
id: bigserial('id', { mode: 'bigint' }).primaryKey(),
|
||||
userId: bigint('user_id', { mode: 'bigint' })
|
||||
.references(() => users.id, { onDelete: 'cascade' }),
|
||||
relatedUserId: bigint('related_user_id', { mode: 'bigint' })
|
||||
.references(() => users.id, { onDelete: 'set null' }),
|
||||
amount: bigint('amount', { mode: 'bigint' }).notNull(),
|
||||
type: varchar('type', { length: 50 }).notNull(),
|
||||
description: text('description'),
|
||||
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow(),
|
||||
});
|
||||
|
||||
export const itemTransactions = pgTable('item_transactions', {
|
||||
id: bigserial('id', { mode: 'bigint' }).primaryKey(),
|
||||
userId: bigint('user_id', { mode: 'bigint' })
|
||||
.references(() => users.id, { onDelete: 'cascade' }).notNull(),
|
||||
relatedUserId: bigint('related_user_id', { mode: 'bigint' })
|
||||
.references(() => users.id, { onDelete: 'set null' }), // who they got it from/gave it to
|
||||
itemId: integer('item_id')
|
||||
.references(() => items.id, { onDelete: 'cascade' }).notNull(),
|
||||
quantity: bigint('quantity', { mode: 'bigint' }).notNull(), // positive = gain, negative = loss
|
||||
type: varchar('type', { length: 50 }).notNull(), // e.g., 'TRADE', 'SHOP_BUY', 'DROP'
|
||||
description: text('description'),
|
||||
createdAt: timestamp('created_at', { withTimezone: true }).defaultNow(),
|
||||
});
|
||||
|
||||
// 6. Quests
|
||||
export const quests = pgTable('quests', {
|
||||
id: serial('id').primaryKey(),
|
||||
@@ -169,4 +185,19 @@ export const cooldownsRelations = relations(cooldowns, ({ one }) => ({
|
||||
fields: [cooldowns.userId],
|
||||
references: [users.id],
|
||||
}),
|
||||
}));
|
||||
|
||||
export const itemTransactionsRelations = relations(itemTransactions, ({ one }) => ({
|
||||
user: one(users, {
|
||||
fields: [itemTransactions.userId],
|
||||
references: [users.id],
|
||||
}),
|
||||
relatedUser: one(users, {
|
||||
fields: [itemTransactions.relatedUserId],
|
||||
references: [users.id],
|
||||
}),
|
||||
item: one(items, {
|
||||
fields: [itemTransactions.itemId],
|
||||
references: [items.id],
|
||||
}),
|
||||
}));
|
||||
@@ -29,7 +29,6 @@ export async function generateStudentIdCard(data: StudentCardData): Promise<Buff
|
||||
|
||||
// Draw Background Gradient with random hue
|
||||
const gradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height);
|
||||
const hue = Math.random() * 360;
|
||||
const saturation = 40 + Math.random() * 20; // 40-60%
|
||||
const lightness = 20 + Math.random() * 20; // 20-40%
|
||||
const color2 = `hsl(${Math.random() * 360}, ${saturation}%, ${lightness}%)`;
|
||||
|
||||
Reference in New Issue
Block a user