diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 0000000..0ee83b0 --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from 'drizzle-kit'; +export default defineConfig({ + dialect: 'sqlite', + schema: './src/lib/db/schema/*', + out: './static/db/drizzle' +}); diff --git a/package.json b/package.json index 7121219..be8c4b7 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@tailwindcss/typography": "^0.5.14", "@types/eslint": "^9.6.0", "autoprefixer": "^10.4.20", + "drizzle-kit": "^0.24.2", "eslint": "^9.0.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.36.0", @@ -40,6 +41,8 @@ "@zeabur/svelte-adapter": "^1.0.0", "bits-ui": "^0.21.13", "canonicalize": "^2.0.0", + "drizzle-orm": "^0.33.0", + "sqlocal": "^0.11.3", "svelte-boring-avatars": "^1.2.6", "svelte-hero-icons": "^5.2.0", "svelte-persisted-store": "^0.11.0", diff --git a/src/lib/db/common.ts b/src/lib/db/common.ts new file mode 100644 index 0000000..12b97df --- /dev/null +++ b/src/lib/db/common.ts @@ -0,0 +1,5 @@ +import { SQLocalDrizzle } from 'sqlocal/drizzle'; +import { drizzle } from 'drizzle-orm/sqlite-proxy'; + +const { driver, batchDriver } = new SQLocalDrizzle('database.sqlite3'); +export const db = drizzle(driver, batchDriver); diff --git a/src/lib/db/index.ts b/src/lib/db/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/lib/db/schema/config.ts b/src/lib/db/schema/config.ts new file mode 100644 index 0000000..201b745 --- /dev/null +++ b/src/lib/db/schema/config.ts @@ -0,0 +1,6 @@ +import { sqliteTable, text } from 'drizzle-orm/sqlite-core'; + +export const configs = sqliteTable('weblah-config', { + key: text('key').primaryKey(), + value: text('value') +}); diff --git a/src/lib/db/schema/identity.ts b/src/lib/db/schema/identity.ts new file mode 100644 index 0000000..6575b82 --- /dev/null +++ b/src/lib/db/schema/identity.ts @@ -0,0 +1,10 @@ +import { sqliteTable, text } from 'drizzle-orm/sqlite-core'; + +export const identities = sqliteTable('identities', { + idKey: text('id_key').primaryKey(), + actKeys: text('act_keys').notNull(), + profileName: text('profile_name').notNull(), + profileBio: text('profile_bio'), + preferredChatServerUrls: text('preferred_chat_server_urls').notNull(), + idUrls: text('id_urls').notNull() +});