From 6c63c60739e86da6562849b442c3242396245a7f Mon Sep 17 00:00:00 2001 From: Araan Branco Date: Fri, 10 Mar 2017 02:16:00 -0300 Subject: [PATCH] Add schemas for series, movies and user --- index.js | 2 ++ models/index.js | 28 ++++++++++++++++ models/movie.js | 9 ++++++ models/schemas/movie.js | 72 +++++++++++++++++++++++++++++++++++++++++ models/schemas/serie.js | 66 ++++++++++++++++++++++++++++++++++++- models/schemas/user.js | 27 +++++++++++++++- models/serie.js | 7 +++- models/user.js | 7 +++- 8 files changed, 214 insertions(+), 4 deletions(-) create mode 100644 models/index.js create mode 100644 models/movie.js create mode 100644 models/schemas/movie.js diff --git a/index.js b/index.js index 7523186..1024395 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,7 @@ import Hapi from 'hapi'; import dotenv from 'dotenv'; import Debug from 'debug'; +import Models from './models'; import Routes from './plugins/routes'; dotenv.config(); @@ -18,6 +19,7 @@ server.connection({ }); let initializer = [ + Models, Routes ]; diff --git a/models/index.js b/models/index.js new file mode 100644 index 0000000..ed63a4d --- /dev/null +++ b/models/index.js @@ -0,0 +1,28 @@ + +import * as db from '../helpers/db'; +import Debug from 'debug'; + +const debug = Debug('sofanerd.models'); + +const register = (server, options, next) => { + const dbConenction = db.connect('sofanerd').connection; + + debug('Models initialize'); + require('./movie').model(dbConenction); + require('./serie').model(dbConenction); + require('./user').model(dbConenction); + + debug('Models registered'); + + next(); +}; + +register.attributes = { + name: 'models', + multi: false, + once: true +}; + +export default { + register +}; \ No newline at end of file diff --git a/models/movie.js b/models/movie.js new file mode 100644 index 0000000..13198e7 --- /dev/null +++ b/models/movie.js @@ -0,0 +1,9 @@ + +import Debug from 'debug'; +import schema from './schemas/movie'; + +const debug = Debug('sofanerd.models.movie'); + +export const model = (connection) => { + return connection.model('Movie', schema); +}; \ No newline at end of file diff --git a/models/schemas/movie.js b/models/schemas/movie.js new file mode 100644 index 0000000..545fa1f --- /dev/null +++ b/models/schemas/movie.js @@ -0,0 +1,72 @@ + +import mongoose from 'mongoose'; + +const Schema = mongoose.Schema; + +const schema = new Schema({ + id_imdb: { + type: Number + }, + name: { + type: String, + required: true + }, + slug: { + type: String + }, + description: { + type: String + }, + year: { + type: Number + }, + genre: { + type: String + }, + country: { + type: String + }, + director: { + type: String + }, + writer: { + type: String + }, + trailer: { + type: String + }, + published: { + type: Array + }, + featured: { + type: Array + }, + checkins: [{ + user_id: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + created_at:{ + type: Date, + default: Date.now + } + }], + reactions: [{ + user_id: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + note: { + type: Number + }, + created_at:{ + type: Date, + default: Date.now + } + }], + favorites: [], + collections: [], + comments: [] +}); + +export default schema; \ No newline at end of file diff --git a/models/schemas/serie.js b/models/schemas/serie.js index 642baf0..cbcc8e9 100644 --- a/models/schemas/serie.js +++ b/models/schemas/serie.js @@ -3,6 +3,70 @@ import mongoose from 'mongoose'; const Schema = mongoose.Schema; -const schema = new Schema(); +const schema = new Schema({ + id_imdb: { + type: Number + }, + id_moviedb: { + type: String + }, + name: { + type: String, + required: true + }, + slug: { + type: String, + required: true + }, + description: { + type: String + }, + runtime: { + type: String + }, + networks: { + type: String + }, + genre: { + type: String + }, + country: { + type: String + }, + status_show: { + type: String + }, + trailer: { + type: String + }, + checkins: [{ + user_id: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + created_at:{ + type: Date, + default: Date.now + } + }], + reactions: [{ + user_id: { + type: Schema.Types.ObjectId, + ref: 'User' + }, + note: { + type: Number + }, + created_at:{ + type: Date, + default: Date.now + } + }], + favorites: [], + collections: [], + seasons: [], + comments: [] +}); + export default schema; \ No newline at end of file diff --git a/models/schemas/user.js b/models/schemas/user.js index 642baf0..28511d9 100644 --- a/models/schemas/user.js +++ b/models/schemas/user.js @@ -3,6 +3,31 @@ import mongoose from 'mongoose'; const Schema = mongoose.Schema; -const schema = new Schema(); +const schema = new Schema({ + username: { type: String }, + name: { type: String }, + email: { type: String }, + password: { type: String }, + roles: { type: Array, default: ['user', 'authenticated'] }, + favorites: [], + collections: [], + reactions: [{ + serie_id: { + type: Schema.Types.ObjectId, + ref: 'Serie', + }, + movie_id: { + type: Schema.Types.ObjectId, + ref: 'Movie', + }, + created_at:{ + type: Date, + default: Date.now + }, + note: { + type: Number + } + }] +}); export default schema; \ No newline at end of file diff --git a/models/serie.js b/models/serie.js index bd1c70d..6ba51fc 100644 --- a/models/serie.js +++ b/models/serie.js @@ -1,4 +1,9 @@ import Debug from 'debug'; +import schema from './schemas/serie'; -const debug = Debug('sofanerd.models.serie'); \ No newline at end of file +const debug = Debug('sofanerd.models.serie'); + +export const model = (connection) => { + return connection.model('Serie', schema); +}; \ No newline at end of file diff --git a/models/user.js b/models/user.js index 206124d..fe35cca 100644 --- a/models/user.js +++ b/models/user.js @@ -1,4 +1,9 @@ import Debug from 'debug'; +import schema from './schemas/user'; -const debug = Debug('sofanerd.models.user'); \ No newline at end of file +const debug = Debug('sofanerd.models.user'); + +export const model = (connection) => { + return connection.model('User', schema); +}; \ No newline at end of file