aboutsummaryrefslogtreecommitdiff
path: root/src/model/Widget.ts
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2025-07-02 22:17:50 +0200
committerschererleander <leander@schererleander.de>2025-07-02 22:17:50 +0200
commit198f95f079078e60e05d1ea6607ee14f79721a7e (patch)
tree517a9f7ebeae329a015c939563b55d1b7a114640 /src/model/Widget.ts
parented9dfc0080ce10dbffe51cbe3fd031b332d43f79 (diff)
feat: add database models
Diffstat (limited to 'src/model/Widget.ts')
-rw-r--r--src/model/Widget.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/model/Widget.ts b/src/model/Widget.ts
new file mode 100644
index 0000000..ed4c8bc
--- /dev/null
+++ b/src/model/Widget.ts
@@ -0,0 +1,25 @@
+import { Schema, model } from "mongoose";
+import { WidgetType, ThemeOption } from "../types/widget";
+
+const WidgetSchema = new Schema({
+ ownerId: { type: String, required: true },
+ id: { type: String, required: true, unique: true },
+ name: { type: String, required: true, default: "unnamed" },
+ type: { type: String, required: true, enum: Object.values(WidgetType) },
+ data: { type: Object, required: true },
+ theme: {
+ option: { type: String, required: true, enum: Object.values(ThemeOption), default: ThemeOption.SYSTEM },
+ customColors: {
+ primary: { type: String },
+ secondary: { type: String },
+ background: { type: String },
+ text: { type: String }
+ }
+ },
+ createdAt: { type: Date, default: Date.now },
+ updatedAt: { type: Date, default: Date.now },
+});
+
+const Widget = model("Widget", WidgetSchema);
+
+export default Widget; \ No newline at end of file