diff --git a/models/user.ts b/models/user.ts deleted file mode 100644 index 33d1b02..0000000 --- a/models/user.ts +++ /dev/null @@ -1,50 +0,0 @@ -export type IWord = { - name: string, - pronounciation: { - text: string, - audio: string, // URL for the audio file - }, - similarWords: Array, - gramaticalDetails: Array<{ - type: 'NOUN' | 'PRONOUN' | 'ADJECTIVE' | 'VERB' | 'ADVERB' | 'PREPOSITION' | 'CONJUNCTION' | 'INTERJECTION', - description: string, - examples: Array, - }> -} - -export type IShelf = { - name: string, - description: string, - viewType: 'PUBLIC' | 'PRIVATE' | 'FRIENDS' | 'FOLLOWERS', - isArchived: boolean, - addedWords: Array<{ - word: IWord, - notes: Array, - isFavourite: boolean, - nextRevisionDateTime: Date, - revisionHistory : Array<{ - day: Date, - wasRecallSuccessful: boolean, - }> - }> -} - -export type ICategory = { - name: string, - icon: string, - shelves: Array, - isArchived: boolean, -} - -export type IUser = { - // For Auth purposes - _id: string, - name: string, - email: string, - password: string, - isVerified: boolean, - otp: number, - - // Other records - categories: Array -} \ No newline at end of file diff --git a/src/models/category.ts b/src/models/category.ts new file mode 100644 index 0000000..2f52384 --- /dev/null +++ b/src/models/category.ts @@ -0,0 +1,9 @@ +import { Shelf } from "./shelf"; + +export interface Category { + _id: string, + name: string, + icon: string, + shelves: Array, + isArchived: boolean, +} \ No newline at end of file diff --git a/src/models/library.ts b/src/models/library.ts new file mode 100644 index 0000000..93a97ae --- /dev/null +++ b/src/models/library.ts @@ -0,0 +1,16 @@ +import { LanguageType } from "./variables"; +import { Word } from "./word"; + +export interface Library { + _id: string, + languageType: LanguageType, + isArchived: boolean, + allWords: Array<{ + word: Word, + isArchived: boolean, + wordStats: { + favouriteCount: number, // Total users who liked this word + addCount: number, // Total users have added this word to their shelf + } + }>, +} \ No newline at end of file diff --git a/src/models/shelf.ts b/src/models/shelf.ts new file mode 100644 index 0000000..b4f51a3 --- /dev/null +++ b/src/models/shelf.ts @@ -0,0 +1,20 @@ +import { viewPermissionType } from "./variables"; +import { Word } from "./word"; + +export interface Shelf { + _id: string, + name: string, + description: string, + viewType: viewPermissionType, + isArchived: boolean, + addedWords: Array<{ + word: Word, + notes: Array, + isFavourite: boolean, + nextRevisionDateTime: Date, + revisionHistory : Array<{ + day: Date, + wasRecallSuccessful: boolean, + }> + }> +} diff --git a/src/models/user.ts b/src/models/user.ts new file mode 100644 index 0000000..ffaff53 --- /dev/null +++ b/src/models/user.ts @@ -0,0 +1,11 @@ +import { Category } from "./category"; + +export type IUser = { + _id: string, + name: string, + email: string, + password: string, + isVerified: boolean, + otp: number, + categories: Array, +} \ No newline at end of file diff --git a/src/models/variables.ts b/src/models/variables.ts new file mode 100644 index 0000000..6f0d24e --- /dev/null +++ b/src/models/variables.ts @@ -0,0 +1,3 @@ +export type grammarType = 'NOUN' | 'PRONOUN' | 'ADJECTIVE' | 'VERB' | 'ADVERB' | 'PREPOSITION' | 'CONJUNCTION' | 'INTERJECTION'; +export type viewPermissionType = 'PUBLIC' | 'PRIVATE' | 'FRIENDS' | 'FOLLOWERS'; +export type LanguageType = 'ENGLISH' | 'KANNADA' | 'HINDI' | 'TAMIL' | 'TELUGU'; diff --git a/src/models/word.ts b/src/models/word.ts new file mode 100644 index 0000000..7a3fe89 --- /dev/null +++ b/src/models/word.ts @@ -0,0 +1,16 @@ +import { grammarType } from "./variables"; + +export interface Word { + _id: string, + name: string, + pronounciation: { + text: string, + audio: string, + }, + similarWords: Array, + grammaticalDetails: Array<{ + type: grammarType, + description: string, + examples: Array, + }> +} \ No newline at end of file diff --git a/src/user-profile/routes.ts b/src/user-profile/routes.ts index 35eb022..aa11d38 100644 --- a/src/user-profile/routes.ts +++ b/src/user-profile/routes.ts @@ -1,6 +1,6 @@ import express from 'express'; import passport from 'passport'; -import { IUser } from '../../models/user'; +import { IUser } from '../models/user'; export const userProfileRoutes = express.Router();