diff options
| author | schererleander <leander@schererleander.de> | 2025-07-02 22:17:50 +0200 |
|---|---|---|
| committer | schererleander <leander@schererleander.de> | 2025-07-02 22:17:50 +0200 |
| commit | 198f95f079078e60e05d1ea6607ee14f79721a7e (patch) | |
| tree | 517a9f7ebeae329a015c939563b55d1b7a114640 /src/model/Widget.ts | |
| parent | ed9dfc0080ce10dbffe51cbe3fd031b332d43f79 (diff) | |
feat: add database models
Diffstat (limited to 'src/model/Widget.ts')
| -rw-r--r-- | src/model/Widget.ts | 25 |
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 |
