From 198f95f079078e60e05d1ea6607ee14f79721a7e Mon Sep 17 00:00:00 2001 From: schererleander Date: Wed, 2 Jul 2025 22:17:50 +0200 Subject: feat: add database models --- src/model/User.ts | 18 ++++++++++++++++++ src/model/Widget.ts | 25 +++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 src/model/User.ts create mode 100644 src/model/Widget.ts (limited to 'src') diff --git a/src/model/User.ts b/src/model/User.ts new file mode 100644 index 0000000..169549a --- /dev/null +++ b/src/model/User.ts @@ -0,0 +1,18 @@ +import { Schema, model, models } from "mongoose"; + +const UserSchema = new Schema({ + name: { type: String, required: true }, + email: { type: String, required: true, unique: true }, + password: { type: String, required: true }, + profileImage: { + url: { type: String }, + key: { type: String }, + uploadedAt: { type: Date } + } +}, { + timestamps: true +}); + +const User = models.User || model("User", UserSchema); + +export default User; \ No newline at end of file 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 -- cgit v1.3.1