From 091766d6e40820bbb73d9bb7ddd3036ea5812cd7 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Sat, 17 Jan 2026 22:19:10 -0700 Subject: [PATCH] Fixed a few things lol --- .env.example | 6 +++--- docker-compose.yml | 2 +- drizzle.config.ts | 13 ++++++++----- scripts/migrate.js | 17 +++++++++++------ src/db/index.ts | 19 ++++++++++--------- src/pages/api/organizations/update-name.ts | 18 +++++++----------- src/pages/dashboard/invoices/[id].astro | 2 +- src/pages/dashboard/invoices/index.astro | 2 +- src/pages/uploads/[...path].ts | 19 +++++++++---------- src/pdf/generateInvoicePDF.ts | 20 ++++++++++---------- 10 files changed, 61 insertions(+), 57 deletions(-) diff --git a/.env.example b/.env.example index 121ec05..ba3ddba 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -# Docker Configuration -IMAGE=ghcr.io/atridad/chronus:latest -APP_PORT=4321 +DATA_DIR=./data ROOT_DIR=./data +APP_PORT=4321 +IMAGE=git.atri.dad/atash/chronus:latest diff --git a/docker-compose.yml b/docker-compose.yml index fb67b44..b3d7a2a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ services: - NODE_ENV=production - HOST=0.0.0.0 - PORT=4321 - - ROOT_DIR=/app/data + - DATA_DIR=/app/data volumes: - ${ROOT_DIR}:/app/data restart: unless-stopped diff --git a/drizzle.config.ts b/drizzle.config.ts index c4290db..d13e4af 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -5,13 +5,17 @@ import * as dotenv from "dotenv"; dotenv.config(); -const rootDir = process.env.ROOT_DIR || process.cwd(); +const dataDir = process.env.DATA_DIR; -if (process.env.ROOT_DIR && !fs.existsSync(rootDir)) { - fs.mkdirSync(rootDir, { recursive: true }); +if (!dataDir) { + throw new Error("DATA_DIR environment variable is not set"); } -const dbUrl = `file:${path.join(rootDir, "chronus.db")}`; +if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); +} + +const dbUrl = `file:${path.join(dataDir, "chronus.db")}`; export default defineConfig({ schema: "./src/db/schema.ts", @@ -19,6 +23,5 @@ export default defineConfig({ dialect: "turso", dbCredentials: { url: dbUrl, - authToken: process.env.DATABASE_AUTH_TOKEN, }, }); diff --git a/scripts/migrate.js b/scripts/migrate.js index 832e8e8..df0e832 100644 --- a/scripts/migrate.js +++ b/scripts/migrate.js @@ -3,20 +3,25 @@ import { migrate } from "drizzle-orm/libsql/migrator"; import { createClient } from "@libsql/client"; import path from "path"; import fs from "fs"; +import * as dotenv from "dotenv"; + +dotenv.config(); async function runMigrate() { console.log("Running migrations..."); - const rootDir = process.env.ROOT_DIR || process.cwd(); + const dataDir = process.env.DATA_DIR; - if (process.env.ROOT_DIR && !fs.existsSync(rootDir)) { - fs.mkdirSync(rootDir, { recursive: true }); + if (!dataDir) { + throw new Error("DATA_DIR environment variable is not set"); } - const url = `file:${path.join(rootDir, "chronus.db")}`; - console.log(`Using database: ${url}`); + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } - const authToken = process.env.DATABASE_AUTH_TOKEN; + const url = `file:${path.join(dataDir, "chronus.db")}`; + console.log(`Using database: ${url}`); const client = createClient({ url, diff --git a/src/db/index.ts b/src/db/index.ts index aaf5657..37081c8 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -11,21 +11,22 @@ let _db: Database | null = null; function initDb(): Database { if (!_db) { - const envRootDir = process.env.ROOT_DIR - ? process.env.ROOT_DIR - : import.meta.env.ROOT_DIR; - const rootDir = envRootDir || process.cwd(); + const dataDir = process.env.DATA_DIR + ? process.env.DATA_DIR + : import.meta.env.DATA_DIR; - if (envRootDir && !fs.existsSync(rootDir)) { - fs.mkdirSync(rootDir, { recursive: true }); + if (!dataDir) { + throw new Error("DATA_DIR environment variable is not set"); } - const url = `file:${path.join(rootDir, "chronus.db")}`; - const authToken = process.env.DATABASE_AUTH_TOKEN; + if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }); + } + + const url = `file:${path.join(dataDir, "chronus.db")}`; const client = createClient({ url, - authToken, }); _db = drizzle(client, { schema }); diff --git a/src/pages/api/organizations/update-name.ts b/src/pages/api/organizations/update-name.ts index fd924a6..d98882a 100644 --- a/src/pages/api/organizations/update-name.ts +++ b/src/pages/api/organizations/update-name.ts @@ -67,20 +67,16 @@ export const POST: APIRoute = async ({ request, locals, redirect }) => { const ext = logo.name.split(".").pop() || "png"; const filename = `${organizationId}-${Date.now()}.${ext}`; - let uploadDir; + const dataDir = process.env.DATA_DIR + ? process.env.DATA_DIR + : import.meta.env.DATA_DIR; - const envRootDir = process.env.ROOT_DIR - ? process.env.ROOT_DIR - : import.meta.env.ROOT_DIR; - - if (envRootDir) { - uploadDir = path.join(envRootDir, "uploads"); - } else { - uploadDir = - process.env.UPLOAD_DIR || - path.join(process.cwd(), "public", "uploads"); + if (!dataDir) { + throw new Error("DATA_DIR environment variable is not set"); } + const uploadDir = path.join(dataDir, "uploads"); + try { await fs.access(uploadDir); } catch { diff --git a/src/pages/dashboard/invoices/[id].astro b/src/pages/dashboard/invoices/[id].astro index f922258..2ca5034 100644 --- a/src/pages/dashboard/invoices/[id].astro +++ b/src/pages/dashboard/invoices/[id].astro @@ -220,7 +220,7 @@ const isDraft = invoice.status === 'draft';
- +
diff --git a/src/pages/dashboard/invoices/index.astro b/src/pages/dashboard/invoices/index.astro index fb5fa0a..ccffc33 100644 --- a/src/pages/dashboard/invoices/index.astro +++ b/src/pages/dashboard/invoices/index.astro @@ -163,7 +163,7 @@ const getStatusColor = (status: string) => {
-
Description