64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
import * as t from 'drizzle-orm/pg-core';
|
|
import { pgEnum, pgTable as table } from 'drizzle-orm/pg-core';
|
|
|
|
export const rolesEnum = pgEnum('roles', ['admin', 'guest', 'pro']);
|
|
|
|
export const deck = table(
|
|
'deck',
|
|
{
|
|
id: t.integer('id').primaryKey().generatedAlwaysAsIdentity(),
|
|
deckname: t.varchar('deckname').notNull(),
|
|
bildname: t.varchar('bildname'),
|
|
bildid: t.varchar('bildid'),
|
|
x1: t.real('x1'),
|
|
x2: t.real('x2'),
|
|
y1: t.real('y1'),
|
|
y2: t.real('y2'),
|
|
due: t.integer('due'),
|
|
ivl: t.real('ivl'),
|
|
factor: t.real('factor'),
|
|
reps: t.integer('reps'),
|
|
lapses: t.integer('lapses'),
|
|
isGraduated: t.integer('isgraduated'),
|
|
user: t.varchar('user').notNull(),
|
|
inserted: t.timestamp('inserted', { mode: 'date' }).defaultNow(),
|
|
updated: t.timestamp('updated', { mode: 'date' }).defaultNow(),
|
|
},
|
|
table => [t.uniqueIndex('deck_idx').on(table.id)],
|
|
);
|
|
export type InsertDeck = typeof deck.$inferInsert;
|
|
export type SelectDeck = typeof deck.$inferSelect;
|
|
export const users = table(
|
|
'users',
|
|
{
|
|
id: t.integer().primaryKey().generatedAlwaysAsIdentity(),
|
|
name: t.varchar('name', { length: 256 }),
|
|
email: t.varchar().notNull(),
|
|
role: rolesEnum().default('guest'),
|
|
sign_in_provider: t.varchar('sign_in_provider', { length: 50 }),
|
|
lastLogin: t.timestamp('lastLogin', { mode: 'date' }).defaultNow(),
|
|
numberOfLogins: t.integer('numberOfLogins').default(1), // Neue Spalte
|
|
},
|
|
table => [t.uniqueIndex('users_idx').on(table.id)],
|
|
);
|
|
export type InsertUser = typeof users.$inferInsert;
|
|
export type SelectUser = typeof users.$inferSelect;
|
|
export interface User {
|
|
name: string;
|
|
picture: string;
|
|
iss: string;
|
|
aud: string;
|
|
auth_time: number;
|
|
user_id: string;
|
|
sub: string;
|
|
iat: number;
|
|
exp: number;
|
|
email: string;
|
|
email_verified: boolean;
|
|
firebase: {
|
|
identities: any;
|
|
sign_in_provider: string;
|
|
};
|
|
uid: string;
|
|
}
|