diff --git a/.gitignore b/.gitignore index 171f629..17c5531 100644 --- a/.gitignore +++ b/.gitignore @@ -7,11 +7,15 @@ node_modules .wrangler /.svelte-kit /build +/drizzle # OS .DS_Store Thumbs.db +# VSCode +/.vscode + # Env .env .env.* diff --git a/drizzle.config.ts b/drizzle.config.ts index 68872c7..9a64b26 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from "drizzle-kit"; if (!process.env.DATABASE_URL) throw new Error("DATABASE_URL is not set"); export default defineConfig({ - schema: "./src/lib/server/db/schema.ts", + schema: "./src/lib/server/db/schema", dbCredentials: { url: process.env.DATABASE_URL, diff --git a/package.json b/package.json index 4b09ce6..66d9525 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "format": "prettier --write .", "lint": "prettier --check . && eslint .", "db:push": "drizzle-kit push", + "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:studio": "drizzle-kit studio" }, diff --git a/src/lib/server/db/schema/device.ts b/src/lib/server/db/schema/device.ts new file mode 100644 index 0000000..44526c6 --- /dev/null +++ b/src/lib/server/db/schema/device.ts @@ -0,0 +1,29 @@ +import { sqliteTable, text, integer, primaryKey } from "drizzle-orm/sqlite-core"; +import { user } from "./user"; + +export enum UserDeviceState { + PENDING = 0, + ACTIVE = 1, +} + +export const device = sqliteTable("device", { + id: integer("id").primaryKey(), + pubKey: text("pub_key").notNull().unique(), +}); + +export const userDevice = sqliteTable( + "user_device", + { + userId: integer("user_id") + .notNull() + .references(() => user.id), + deviceId: integer("device_id") + .notNull() + .references(() => device.id), + state: integer("state").notNull().default(0), + encKey: text("enc_key"), + }, + (t) => ({ + pk: primaryKey({ columns: [t.userId, t.deviceId] }), + }), +); diff --git a/src/lib/server/db/schema/index.ts b/src/lib/server/db/schema/index.ts new file mode 100644 index 0000000..bcd10e8 --- /dev/null +++ b/src/lib/server/db/schema/index.ts @@ -0,0 +1,2 @@ +export * from "./device"; +export * from "./user"; diff --git a/src/lib/server/db/schema.ts b/src/lib/server/db/schema/user.ts similarity index 64% rename from src/lib/server/db/schema.ts rename to src/lib/server/db/schema/user.ts index d6309dd..2ad0e3c 100644 --- a/src/lib/server/db/schema.ts +++ b/src/lib/server/db/schema/user.ts @@ -2,5 +2,6 @@ import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core"; export const user = sqliteTable("user", { id: integer("id").primaryKey(), - age: integer("age"), + email: text("email").notNull().unique(), + password: text("password").notNull(), }); diff --git a/src/routes/(fullscreen)/login/+page.svelte b/src/routes/(fullscreen)/login/+page.svelte index 191f4e2..db09d0a 100644 --- a/src/routes/(fullscreen)/login/+page.svelte +++ b/src/routes/(fullscreen)/login/+page.svelte @@ -14,7 +14,7 @@

서비스를 이용하려면 로그인을 해야해요.

- +