feat: Add DB migrations

This commit is contained in:
Matej Stieranka 2025-06-24 18:23:26 +02:00
parent 878fdc7fb4
commit 3621cf6ae2
4 changed files with 163 additions and 0 deletions

View file

@ -0,0 +1,17 @@
CREATE TABLE `eventsTable` (
`id` integer PRIMARY KEY NOT NULL,
`startTime` text NOT NULL,
`endTime` text NOT NULL,
`name` text NOT NULL,
`title` text NOT NULL,
`description` text NOT NULL,
`type` text NOT NULL,
`lineId` integer NOT NULL,
FOREIGN KEY (`lineId`) REFERENCES `linesTable`(`id`) ON UPDATE cascade ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `linesTable` (
`id` integer PRIMARY KEY NOT NULL,
`name` text NOT NULL,
`description` text NOT NULL
);

View file

@ -0,0 +1,129 @@
{
"version": "6",
"dialect": "sqlite",
"id": "67a86f93-2bc8-4fe2-8786-995874bf9863",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"eventsTable": {
"name": "eventsTable",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"startTime": {
"name": "startTime",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"endTime": {
"name": "endTime",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"title": {
"name": "title",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"lineId": {
"name": "lineId",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {
"eventsTable_lineId_linesTable_id_fk": {
"name": "eventsTable_lineId_linesTable_id_fk",
"tableFrom": "eventsTable",
"tableTo": "linesTable",
"columnsFrom": [
"lineId"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "cascade"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
},
"linesTable": {
"name": "linesTable",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"checkConstraints": {}
}
},
"views": {},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
}
}

View file

@ -0,0 +1,13 @@
{
"version": "7",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "6",
"when": 1750781935205,
"tag": "0000_low_firebird",
"breakpoints": true
}
]
}

View file

@ -2,6 +2,7 @@ import type { Event, Line } from "@/common/parser";
import "dotenv/config"; import "dotenv/config";
import { and, eq, gte, inArray, like, lte, or } from "drizzle-orm"; import { and, eq, gte, inArray, like, lte, or } from "drizzle-orm";
import { drizzle } from "drizzle-orm/libsql"; import { drizzle } from "drizzle-orm/libsql";
import { migrate } from "drizzle-orm/libsql/migrator";
import { import {
eventsTable, eventsTable,
type eventsTableSelectSchema, type eventsTableSelectSchema,
@ -13,6 +14,9 @@ if (!process.env.DB_FILE_NAME) {
} }
const db = drizzle(process.env.DB_FILE_NAME); const db = drizzle(process.env.DB_FILE_NAME);
await migrate(db, {
migrationsFolder: "./drizzle",
});
export async function saveLines(lines: Line[]) { export async function saveLines(lines: Line[]) {
await db await db