Skip to content

Commit

Permalink
Add settings
Browse files Browse the repository at this point in the history
  • Loading branch information
markspolakovs committed Nov 16, 2023
1 parent 81bd2c0 commit 6e2018c
Show file tree
Hide file tree
Showing 53 changed files with 1,191 additions and 0 deletions.
39 changes: 39 additions & 0 deletions server/lib/settings.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { SettingKey, SettingsCategory } from "@bowser/prisma/client";
import { JsonValue } from "@bowser/prisma/client/runtime/library";
import { db } from "./db";

interface SettingsTypes
extends Record<SettingsCategory, Record<SettingKey, JsonValue>> {
[SettingsCategory.YouTube]: {
[SettingKey.TitleMetadataID]: number;
[SettingKey.DescriptionMetadataID]: number;
};
}

const SETTINGS_DEFAULT_VALUES: Record<
SettingsCategory,
Partial<Record<SettingKey, JsonValue>>
> = {
YouTube: {},
};

export async function getSetting<
C extends SettingsCategory,
K extends SettingKey,
>(category: C, key: K): Promise<SettingsTypes[C][K] | undefined> {
const value = await db.setting.findUnique({
where: {
category_key: {
category,
key,
},
},
});
if (value) {
return value.value as SettingsTypes[C][K];
}

return SETTINGS_DEFAULT_VALUES[category][key] as
| SettingsTypes[C][K]
| undefined;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
-- CreateEnum
CREATE TYPE "SettingsCategory" AS ENUM ('YouTube');

-- CreateEnum
CREATE TYPE "SettingKey" AS ENUM ('TitleMetadataID', 'DescriptionMetadataID');

-- CreateTable
CREATE TABLE "settings" (
"id" SERIAL NOT NULL,
"category" "SettingsCategory" NOT NULL,
"key" "SettingKey" NOT NULL,
"value" JSONB NOT NULL,

CONSTRAINT "settings_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE UNIQUE INDEX "settings_category_key_key" ON "settings"("category", "key");
19 changes: 19 additions & 0 deletions utility/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,25 @@ model Metadata {
@@map("metadata")
}

enum SettingsCategory {
YouTube
}

enum SettingKey {
TitleMetadataID
DescriptionMetadataID
}

model Setting {
id Int @id @default(autoincrement())
category SettingsCategory
key SettingKey
value Json
@@unique([category, key])
@@map("settings")
}

enum MediaState {
Pending
Processing
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 6e2018c

Please sign in to comment.