all repos — stealth-developers @ c1e008854e2d0efa15d99370aa5abaa7413d26f2

pkgs/db/src/schemas/users.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
import * as s from "drizzle-orm/sqlite-core";

export const users = s.sqliteTable("users", {
	id: s.integer("id").primaryKey({ autoIncrement: true }),

	discordId: s.text("discord_id").unique(),
	displayName: s.text("display_name"),
	username: s.text("username"),
	avatar: s.text("avatar"),

	acceptedPrivacyPolicy: s
		.integer("accepted_privacy_policy", { mode: "boolean" })
		.default(false)
		.notNull(),
	acceptedTermsOfService: s
		.integer("accepted_terms_of_service", { mode: "boolean" })
		.default(false)
		.notNull(),

	createdAt: s.integer("created_at", { mode: "timestamp" }).notNull(),
	updatedAt: s.integer("updated_at", { mode: "timestamp" }).notNull(),
});

export const sessions = s.sqliteTable("sessions", {
	id: s.text("id").primaryKey(),
	userId: s
		.integer("user_id")
		.notNull()
		.references(() => users.id, { onDelete: "cascade" }),

	accessToken: s.text("access_token").notNull(),
	refreshToken: s.text("refresh_token").notNull(),
	scope: s.text("scope"),
	tokenType: s.text("token_type"),

	expiresAt: s.integer("expires_at", { mode: "timestamp" }).notNull(),
	createdAt: s.integer("created_at", { mode: "timestamp" }).notNull(),
});

export type User = typeof users.$inferSelect;
export type NewUser = typeof users.$inferInsert;

export type Session = typeof sessions.$inferSelect;
export type NewSession = typeof sessions.$inferInsert;