initial commit
Some checks failed
deploy / build-and-deploy (push) Failing after 21s

This commit is contained in:
2025-05-18 13:16:20 +02:00
commit 60f3f8a096
148 changed files with 17900 additions and 0 deletions

41
src/db/schema/settings.ts Normal file
View File

@ -0,0 +1,41 @@
import { mysqlTable, text, varchar } from 'drizzle-orm/mysql-core';
import { eq, inArray } from 'drizzle-orm';
import type { MySql2Database } from 'drizzle-orm/mysql2';
type Database = MySql2Database<{ settings: typeof settings }>;
export const settings = mysqlTable('settings', {
name: varchar('name', { length: 255 }).unique().notNull(),
value: text()
});
export type GetSettingsReq = {
names?: string[];
};
export type SetSettingsReq = {
settings: {
name: string;
value: string | null;
}[];
};
export type GetSettingReq = {
name: string;
};
export async function getSettings(db: Database, values: GetSettingsReq) {
return db
.select({ name: settings.name, value: settings.value })
.from(settings)
.where(values.names ? inArray(settings.name, values.names) : undefined);
}
export async function setSettings(db: Database, values: SetSettingsReq) {
await db.insert(settings).values(values.settings);
}
export async function getSetting(db: Database, values: GetSettingReq): Promise<string | null> {
const value = await db.select({ value: settings.value }).from(settings).where(eq(settings.name, values.name));
return value.length > 0 ? value[0]?.value : null;
}