Init
This commit is contained in:
10
server/database/migrations/0000_glossy_chamber.sql
Normal file
10
server/database/migrations/0000_glossy_chamber.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
CREATE TABLE `users` (
|
||||
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`email` text NOT NULL,
|
||||
`password` text NOT NULL,
|
||||
`avatar` text NOT NULL,
|
||||
`created_at` integer NOT NULL
|
||||
);
|
||||
--> statement-breakpoint
|
||||
CREATE UNIQUE INDEX `users_email_unique` ON `users` (`email`);
|
||||
76
server/database/migrations/meta/0000_snapshot.json
Normal file
76
server/database/migrations/meta/0000_snapshot.json
Normal file
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"version": "6",
|
||||
"dialect": "sqlite",
|
||||
"id": "df46f5ae-5350-4f3e-bf7e-aff5aca8bc09",
|
||||
"prevId": "00000000-0000-0000-0000-000000000000",
|
||||
"tables": {
|
||||
"users": {
|
||||
"name": "users",
|
||||
"columns": {
|
||||
"id": {
|
||||
"name": "id",
|
||||
"type": "integer",
|
||||
"primaryKey": true,
|
||||
"notNull": true,
|
||||
"autoincrement": true
|
||||
},
|
||||
"name": {
|
||||
"name": "name",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"email": {
|
||||
"name": "email",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"password": {
|
||||
"name": "password",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"avatar": {
|
||||
"name": "avatar",
|
||||
"type": "text",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
},
|
||||
"created_at": {
|
||||
"name": "created_at",
|
||||
"type": "integer",
|
||||
"primaryKey": false,
|
||||
"notNull": true,
|
||||
"autoincrement": false
|
||||
}
|
||||
},
|
||||
"indexes": {
|
||||
"users_email_unique": {
|
||||
"name": "users_email_unique",
|
||||
"columns": [
|
||||
"email"
|
||||
],
|
||||
"isUnique": true
|
||||
}
|
||||
},
|
||||
"foreignKeys": {},
|
||||
"compositePrimaryKeys": {},
|
||||
"uniqueConstraints": {}
|
||||
}
|
||||
},
|
||||
"enums": {},
|
||||
"_meta": {
|
||||
"schemas": {},
|
||||
"tables": {},
|
||||
"columns": {}
|
||||
},
|
||||
"internal": {
|
||||
"indexes": {}
|
||||
}
|
||||
}
|
||||
13
server/database/migrations/meta/_journal.json
Normal file
13
server/database/migrations/meta/_journal.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": "7",
|
||||
"dialect": "sqlite",
|
||||
"entries": [
|
||||
{
|
||||
"idx": 0,
|
||||
"version": "6",
|
||||
"when": 1717829526341,
|
||||
"tag": "0000_glossy_chamber",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
10
server/database/schema.ts
Normal file
10
server/database/schema.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'
|
||||
|
||||
export const users = sqliteTable('users', {
|
||||
id: integer('id').primaryKey({ autoIncrement: true }),
|
||||
name: text('name').notNull(),
|
||||
email: text('email').notNull().unique(),
|
||||
password: text('password').notNull(),
|
||||
avatar: text('avatar').notNull(),
|
||||
createdAt: integer('created_at', { mode: 'timestamp' }).notNull(),
|
||||
})
|
||||
14
server/tasks/db/migrate.ts
Normal file
14
server/tasks/db/migrate.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { migrate } from 'drizzle-orm/better-sqlite3/migrator'
|
||||
|
||||
export default defineTask({
|
||||
meta: {
|
||||
name: "db:migrate",
|
||||
description: "Run database migrations",
|
||||
},
|
||||
async run({ payload, context }) {
|
||||
await migrate(useDrizzle(), { migrationsFolder: 'server/database/migrations' })
|
||||
|
||||
|
||||
return { result: "Success" };
|
||||
},
|
||||
});
|
||||
3
server/tsconfig.json
Normal file
3
server/tsconfig.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../.nuxt/tsconfig.server.json"
|
||||
}
|
||||
14
server/utils/drizzle.ts
Normal file
14
server/utils/drizzle.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
||||
import Database from 'better-sqlite3';
|
||||
|
||||
import * as schema from '../database/schema'
|
||||
export { sql, eq, and, or } from 'drizzle-orm'
|
||||
|
||||
export const tables = schema
|
||||
|
||||
export function useDrizzle() {
|
||||
const sqlite = new Database('sqlite.db');
|
||||
return drizzle(sqlite, { schema })
|
||||
}
|
||||
|
||||
export type User = typeof schema.users.$inferSelect
|
||||
Reference in New Issue
Block a user