Skip to content

Commit

Permalink
Add settings
Browse files Browse the repository at this point in the history
  • Loading branch information
markspolakovs committed Nov 21, 2023
1 parent e34678b commit fe23d33
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 fe23d33

Please sign in to comment.