From de9771959850f193f173616b73099c3ae6f010c9 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Tue, 9 Jun 2020 19:23:44 +0300 Subject: feat!: integrate mongoDB --- models/polls/poll.model.ts | 5 +++++ models/polls/poll.schema.ts | 33 +++++++++++++++++++++++++++++++++ models/users/user.model.ts | 5 +++++ models/users/user.schema.ts | 19 +++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 models/polls/poll.model.ts create mode 100644 models/polls/poll.schema.ts create mode 100644 models/users/user.model.ts create mode 100644 models/users/user.schema.ts (limited to 'models') diff --git a/models/polls/poll.model.ts b/models/polls/poll.model.ts new file mode 100644 index 0000000..211d1e6 --- /dev/null +++ b/models/polls/poll.model.ts @@ -0,0 +1,5 @@ +import { Model, model } from "mongoose" +import { Poll, PollSchema } from './poll.schema'; + +export default model>("Poll", PollSchema); + diff --git a/models/polls/poll.schema.ts b/models/polls/poll.schema.ts new file mode 100644 index 0000000..2e7dccd --- /dev/null +++ b/models/polls/poll.schema.ts @@ -0,0 +1,33 @@ +import { Document, Schema, Types } from 'mongoose'; +import { User } from '../users/user.schema'; + +interface ImageData { + url: string; + votes: number; +} + +export interface Poll extends Document { + authorId: string; + contents: { + left: ImageData; + right: ImageData; + }; +} + + +const imageDataSchema = { + url: String, + votes: Number +} + +export const PollSchema = new Schema({ + contents: { + left: imageDataSchema, + right: imageDataSchema + }, + authorId: { + type: Types.ObjectId, + ref: 'User' + } +}); + diff --git a/models/users/user.model.ts b/models/users/user.model.ts new file mode 100644 index 0000000..cec9298 --- /dev/null +++ b/models/users/user.model.ts @@ -0,0 +1,5 @@ +import { Model, model } from "mongoose" +import { User, UserSchema } from './user.schema'; + +export default model>("User", UserSchema); + diff --git a/models/users/user.schema.ts b/models/users/user.schema.ts new file mode 100644 index 0000000..c846f81 --- /dev/null +++ b/models/users/user.schema.ts @@ -0,0 +1,19 @@ +import { Document, Schema } from "mongoose" + +export interface User extends Document { + name: string; + avatarUrl?: string; + age?: number; +} + +export const UserSchema = new Schema({ + name: String, + avatarUrl: { + type: String, + required: false + }, + age: { + type: Number + } +}); + -- cgit v1.2.3