From 75e527334e4e9a94b63704f87aa650c75f13891c Mon Sep 17 00:00:00 2001
From: eug-vs <eug-vs@keemail.me>
Date: Wed, 24 Jun 2020 00:58:45 +0300
Subject: feat: migrate to latest which-types

---
 models/polls/poll.model.ts  |  3 ++-
 models/polls/poll.schema.ts |  3 ++-
 models/users/user.schema.ts | 10 ++++++----
 3 files changed, 10 insertions(+), 6 deletions(-)

(limited to 'models')

diff --git a/models/polls/poll.model.ts b/models/polls/poll.model.ts
index 11d0cfa..6749e5c 100644
--- a/models/polls/poll.model.ts
+++ b/models/polls/poll.model.ts
@@ -1,8 +1,9 @@
 import { Model, model } from 'mongoose';
 import { PollSchema, pollSchema } from './poll.schema';
 import { Types } from 'mongoose';
+import { Which } from 'which-types';
 
-pollSchema.methods.vote = function(userId: string, which: 'left' | 'right'): PollSchema {
+pollSchema.methods.vote = function(userId: string, which: Which): PollSchema {
   const participants: Types.ObjectId[] = ['left', 'right'].reduce((acc, option) => {
     const { votes } = this.contents[option];
     return acc.concat(votes);
diff --git a/models/polls/poll.schema.ts b/models/polls/poll.schema.ts
index 380c069..d495e4b 100644
--- a/models/polls/poll.schema.ts
+++ b/models/polls/poll.schema.ts
@@ -10,6 +10,7 @@ export interface PollSchema extends Document {
     left: ImageDataSchema;
     right: ImageDataSchema;
   };
+  createdAt: Date;
   authorId: string;
   vote: (userId: string, which: 'left' | 'right') => PollSchema;
 }
@@ -28,5 +29,5 @@ export const pollSchema = new Schema({
     type: Types.ObjectId,
     ref: 'User'
   }
-});
+}, { timestamps: true });
 
diff --git a/models/users/user.schema.ts b/models/users/user.schema.ts
index 9030d61..ff6cbe9 100644
--- a/models/users/user.schema.ts
+++ b/models/users/user.schema.ts
@@ -1,19 +1,21 @@
 import { Document, Schema } from 'mongoose';
 import { User } from 'which-types';
 
-export interface UserSchema extends Document, User {
+export interface UserSchema extends Document, Omit<User, '_id'> {
   password: string;
 }
 
 export const userSchema = new Schema({
-  name: String,
+  username: String,
   password: String,
+  email: String,
   avatarUrl: {
     type: String,
     required: false
   },
   age: {
-    type: Number
+    type: Number,
+    required: false
   }
-});
+}, { timestamps: true });
 
-- 
cgit v1.2.3