사용자 관련 DB 스키마 생성

This commit is contained in:
static
2024-12-26 16:01:14 +09:00
parent 07252126ec
commit d83dc6b8d2
7 changed files with 40 additions and 3 deletions

4
.gitignore vendored
View File

@@ -7,11 +7,15 @@ node_modules
.wrangler
/.svelte-kit
/build
/drizzle
# OS
.DS_Store
Thumbs.db
# VSCode
/.vscode
# Env
.env
.env.*

View File

@@ -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,

View File

@@ -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"
},

View File

@@ -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] }),
}),
);

View File

@@ -0,0 +1,2 @@
export * from "./device";
export * from "./user";

View File

@@ -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(),
});

View File

@@ -14,7 +14,7 @@
<p>서비스를 이용하려면 로그인을 해야해요.</p>
</div>
<div class="mt-4 flex flex-col gap-y-2">
<TextInput placeholder="아이디" />
<TextInput placeholder="이메일" />
<TextInput placeholder="비밀번호" type="password" />
</div>
</div>