From e14139097bc292f58b274d5a3d9edd1a4fb70636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=80=E7=BA=B8=E5=BF=98=E5=BF=A7?= Date: Fri, 26 Jan 2024 16:17:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ bun.lockb | Bin 245250 -> 262003 bytes db/schema.ts | 14 ++++++++++++++ drizzle.config.ts | 5 +++++ index.ts | 9 +++++++++ package.json | 11 +++++++---- 6 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 db/schema.ts create mode 100644 drizzle.config.ts create mode 100644 index.ts diff --git a/.gitignore b/.gitignore index d9b1678a..23a79ed5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ .DS_Store node_modules dist +sqlite.db +drizzle diff --git a/bun.lockb b/bun.lockb index a32bbdb707bf023b91d9954d75436e78382eb949..d4f5ae25581d4ddeafc407f543b7af6716aec5d0 100755 GIT binary patch delta 46322 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 domain.id), + delay: integer('delay', { mode: 'number' }), + status: integer('status', { mode: 'boolean' }), + timestamp: integer('timestamp', { mode: 'timestamp_ms' }), +}) diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 00000000..7cb17957 --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,5 @@ +import type { Config } from 'drizzle-kit' +export default { + schema: './db/schema.ts', + out: './db/drizzle', +} satisfies Config diff --git a/index.ts b/index.ts new file mode 100644 index 00000000..b4b257d6 --- /dev/null +++ b/index.ts @@ -0,0 +1,9 @@ +import { drizzle } from 'drizzle-orm/bun-sqlite' +import { migrate } from 'drizzle-orm/bun-sqlite/migrator' +import { Database } from 'bun:sqlite' +import * as schema from './db/schema' + +const sqlite = new Database('./db/sqlite.db') +const db = drizzle(sqlite, { schema }) + +migrate(db, { migrationsFolder: './db/drizzle' }) diff --git a/package.json b/package.json index 1e122664..b7b421c0 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,11 @@ "author": "一纸忘忧 ", "type": "module", "scripts": { - "build": "bun x vite build", - "dev": "bun x vite", - "service": "bun --watch service/server.ts", - "tsc": "bun x vue-tsc" + "build": "vite build", + "dev": "vite", + "service": "bun --watch index.ts", + "generate": "drizzle-kit generate:sqlite", + "tsc": "vue-tsc" }, "dependencies": { "@arco-design/web-vue": "^2.54.1", @@ -32,6 +33,8 @@ "@typescript-eslint/eslint-plugin": "^6.17.0", "@typescript-eslint/parser": "^6.17.0", "@vitejs/plugin-vue": "^5.0.2", + "drizzle-kit": "^0.20.13", + "drizzle-orm": "^0.29.3", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-vue": "^9.19.2",