refactor: env validation typescript and common package (#1912)

This commit is contained in:
Meier Lukas
2025-01-14 19:03:38 +01:00
committed by GitHub
parent a03a01b964
commit 1fd3fd8dfb
36 changed files with 98 additions and 83 deletions

View File

@@ -1,6 +1,6 @@
import type { Config } from "drizzle-kit";
import { env } from "../env.mjs";
import { env } from "../env";
export default {
dialect: "mysql",

View File

@@ -1,6 +1,6 @@
import type { Config } from "drizzle-kit";
import { env } from "../env.mjs";
import { env } from "../env";
export default {
dialect: "sqlite",

View File

@@ -7,7 +7,7 @@ import mysql from "mysql2";
import { logger } from "@homarr/log";
import { env } from "./env.mjs";
import { env } from "./env";
import * as mysqlSchema from "./schema/mysql";
import * as sqliteSchema from "./schema/sqlite";

View File

@@ -1,12 +1,14 @@
import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";
import { shouldSkipEnvValidation } from "@homarr/common/env-validation";
const drivers = {
betterSqlite3: "better-sqlite3",
mysql2: "mysql2",
};
} as const;
const isDriver = (driver) => process.env.DB_DRIVER === driver;
const isDriver = (driver: (typeof drivers)[keyof typeof drivers]) => process.env.DB_DRIVER === driver;
const isUsingDbHost = Boolean(process.env.DB_HOST);
const onlyAllowUrl = isDriver(drivers.betterSqlite3);
const urlRequired = onlyAllowUrl || !isUsingDbHost;
@@ -55,6 +57,5 @@ export const env = createEnv({
DB_NAME: process.env.DB_NAME,
DB_PORT: process.env.DB_PORT,
},
skipValidation:
Boolean(process.env.CI) || Boolean(process.env.SKIP_ENV_VALIDATION) || process.env.npm_lifecycle_event === "lint",
skipValidation: shouldSkipEnvValidation(),
});

View File

@@ -3,7 +3,7 @@ import { migrate } from "drizzle-orm/mysql2/migrator";
import mysql from "mysql2";
import type { Database } from "../..";
import { env } from "../../env.mjs";
import { env } from "../../env";
import * as mysqlSchema from "../../schema/mysql";
import { seedDataAsync } from "../seed";

View File

@@ -2,7 +2,7 @@ import Database from "better-sqlite3";
import { drizzle } from "drizzle-orm/better-sqlite3";
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
import { env } from "../../env.mjs";
import { env } from "../../env";
import * as sqliteSchema from "../../schema/sqlite";
import { seedDataAsync } from "../seed";

View File

@@ -11,7 +11,7 @@
"./test": "./test/index.ts",
"./queries": "./queries/index.ts",
"./validationSchemas": "./validationSchemas.ts",
"./env.mjs": "./env.mjs"
"./env": "./env.ts"
},
"main": "./index.ts",
"types": "./index.ts",