Skip to content

Commit

Permalink
refactor: use turso instead of d1
Browse files Browse the repository at this point in the history
  • Loading branch information
yjl9903 committed Mar 5, 2024
1 parent d26ae2a commit 54fc677
Show file tree
Hide file tree
Showing 14 changed files with 273 additions and 50 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ jobs:
run: pnpm install

- name: Build
env:
TURSO_URL: 'libsql://resonance-market-yjl9903.turso.io'
TURSO_AUTH_TOKEN: ${{ secrets.TURSO_AUTH_TOKEN }}
run: pnpm build --preset=cloudflare_module

- name: Deploy
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Secrets
.env

# Dependency directory
node_modules

Expand Down
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,15 @@ Please make sure [git] and [pnpm] are installed.
pnpm install
```

3. 运行开发测试。
3. 准备开发用的 SQLite 数据库

Prepare development SQLite database

```bash
pnpm db:prepare:dev
```

4. 运行开发测试。

Run the development test.

Expand Down
2 changes: 1 addition & 1 deletion drizzle/connect.ts → drizzle/dev/connect.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Database from 'better-sqlite3';
import { drizzle } from 'drizzle-orm/better-sqlite3';

import { users, products, logs } from './schema';
import { users, products, logs } from '../schema';

export const client = new Database('sqlite.db');

Expand Down
11 changes: 7 additions & 4 deletions drizzle/migrate.ts → drizzle/dev/initialize.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
import { cities } from '../../lib/city';

import { cities } from '../lib/city';
import { products, users } from '../schema';

import { products } from './schema';
import { database } from './connect';

migrate(database, { migrationsFolder: './drizzle/migrations' });
await database
.insert(users)
.values({ id: 1, name: 'anonymous' })
.onConflictDoNothing()
.returning({ id: users.id });

for (const city of cities) {
for (const product of city.products) {
Expand Down
5 changes: 5 additions & 0 deletions drizzle/dev/migrate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';

import { database } from './connect';

migrate(database, { migrationsFolder: './drizzle/migrations' });
16 changes: 16 additions & 0 deletions drizzle/prod/connect.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { drizzle } from 'drizzle-orm/libsql';
import { createClient } from '@libsql/client';

import { users, products, logs } from '../schema';

export function connect(env = process.env) {
const { TURSO_URL, TURSO_AUTH_TOKEN } = env ?? {};
if (!TURSO_URL || !TURSO_AUTH_TOKEN) {
throw new Error(`Can not find connect information`);
}

const client = createClient({ url: TURSO_URL, authToken: TURSO_AUTH_TOKEN });
const db = drizzle(client, { logger: false, schema: { users, products, logs } });

return db;
}
24 changes: 24 additions & 0 deletions drizzle/prod/initialize.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import 'dotenv/config';

import { cities } from '../../lib/city';

import { products, users } from '../schema';

import { connect } from './connect';

const database = connect();

await database
.insert(users)
.values({ id: 1, name: 'anonymous' })
.onConflictDoUpdate({ target: users.id, set: { name: 'anonymous' } })
.returning({ id: users.id });

for (const city of cities) {
for (const product of city.products) {
await database
.insert(products)
.values({ city: city.name, name: product.name })
.onConflictDoNothing();
}
}
9 changes: 9 additions & 0 deletions drizzle/prod/migrate.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'dotenv/config';

import { migrate } from 'drizzle-orm/libsql/migrator';

import { connect } from './connect';

const database = connect();

migrate(database, { migrationsFolder: './drizzle/migrations' });
29 changes: 19 additions & 10 deletions nuxt.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { fileURLToPath } from 'node:url';
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
debug: false,
devtools: { enabled: true },
devtools: { enabled: false },
modules: [
'@vueuse/nuxt',
'@unocss/nuxt',
Expand All @@ -20,14 +20,14 @@ export default defineNuxtConfig({
}
},
components: [
{
path: '~/components/common',
pathPrefix: false
},
{
path: '~/components/docs',
pathPrefix: false
},
// {
// path: '~/components/common',
// pathPrefix: false
// },
// {
// path: '~/components/docs',
// pathPrefix: false
// },
{
path: '~/components',
pathPrefix: false
Expand All @@ -47,6 +47,10 @@ export default defineNuxtConfig({
script: []
}
},
runtimeConfig: {
TURSO_URL: import.meta.env.TURSO_URL,
TURSO_AUTH_TOKEN: import.meta.env.TURSO_AUTH_TOKEN
},
image: {},
unocss: {
preflight: true
Expand All @@ -63,5 +67,10 @@ export default defineNuxtConfig({
// ...
}
},
analytics: {}
analytics: {
umami: {
src: `umami.onekuma.cn`,
id: `6d532af3-e9bc-43a1-998b-8d3cae5fcbb6`
}
}
});
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@
"type": "module",
"scripts": {
"build": "nuxt build",
"db:prepare:dev": "tsx drizzle/dev/migrate.ts && tsx drizzle/dev/initialize.ts",
"db:prepare:prod": "tsx drizzle/prod/migrate.ts && tsx drizzle/prod/initialize.ts",
"deploy": "wrangler deploy",
"dev": "nuxt dev",
"drizzle-kit": "drizzle-kit",
"format": "prettier --write **/*.{ts,vue}",
"generate": "nuxt generate",
"postinstall": "nuxt prepare",
"prepare:sqlite": "tsx drizzle/migrate.ts",
"preview": "nuxt preview",
"release": "bumpp package.json packages/*/package.json --commit --push --tag",
"shadcn": "shadcn-vue",
Expand All @@ -23,6 +24,7 @@
},
"dependencies": {
"@formkit/tempo": "^0.0.12",
"@libsql/client": "^0.5.2",
"@nuxt/image": "1.2.0",
"@pinia/nuxt": "^0.5.1",
"@vee-validate/zod": "^4.12.5",
Expand Down
Loading

0 comments on commit 54fc677

Please sign in to comment.