From 8dd59ae64b7d44719a84d2e5be801b0394e9c5c3 Mon Sep 17 00:00:00 2001 From: Riccardo Date: Sun, 3 Jan 2021 15:32:12 +0100 Subject: [PATCH] Some changes --- server/src/models/appointment.js | 43 +++++++++++++++++++++++++++ server/src/models/task.js | 33 --------------------- server/src/models/user.js | 21 +++++++++++-- server/src/schema/appointment.js | 51 ++++++++++++++++++++++++++++++++ server/src/schema/index.js | 6 ++-- server/src/schema/task.js | 24 --------------- 6 files changed, 115 insertions(+), 63 deletions(-) create mode 100644 server/src/models/appointment.js delete mode 100644 server/src/models/task.js create mode 100644 server/src/schema/appointment.js delete mode 100644 server/src/schema/task.js diff --git a/server/src/models/appointment.js b/server/src/models/appointment.js new file mode 100644 index 0000000..1fa9f18 --- /dev/null +++ b/server/src/models/appointment.js @@ -0,0 +1,43 @@ +import mongoose from 'mongoose'; +import timestamps from 'mongoose-timestamp'; +import { composeWithMongoose } from 'graphql-compose-mongoose'; + +export const AppointmentSchema = new mongoose.Schema( + { + user: { + type: mongoose.Schema.Types.ObjectId, + ref: 'User', + required: true, + }, + + title: { + type: String, + required: true, + }, + + description: { + type: String, + required: true, + }, + + timeStart: { + type: Date, + required: true, + }, + + timeEnd: { + type: Date, + required: true, + }, + }, + { + collection: 'appointment', + } +); + +AppointmentSchema.plugin(timestamps); + +AppointmentSchema.index({ createdAt: 1, updatedAt: 1 }); + +export const Appointment = mongoose.model('Appointment', AppointmentSchema); +export const AppointmentTC = composeWithMongoose(Appointment); \ No newline at end of file diff --git a/server/src/models/task.js b/server/src/models/task.js deleted file mode 100644 index 2961b28..0000000 --- a/server/src/models/task.js +++ /dev/null @@ -1,33 +0,0 @@ -import mongoose from 'mongoose'; -import timestamps from 'mongoose-timestamp'; -import { composeWithMongoose } from 'graphql-compose-mongoose'; - -export const TaskSchema = new mongoose.Schema( - { - user: { - type: mongoose.Schema.Types.ObjectId, - ref: 'User', - required: true, - }, - task: { - type: String, - trim: true, - required: true, - }, - description: { - type: String, - trim: true, - required: true, - }, - }, - { - collection: 'tasks', - } -); - -TaskSchema.plugin(timestamps); - -TaskSchema.index({ createdAt: 1, updatedAt: 1 }); - -export const Task = mongoose.model('Task', TaskSchema); -export const TaskTC = composeWithMongoose(Task); \ No newline at end of file diff --git a/server/src/models/user.js b/server/src/models/user.js index 4296684..e91a4a4 100644 --- a/server/src/models/user.js +++ b/server/src/models/user.js @@ -4,18 +4,33 @@ import { composeWithMongoose } from 'graphql-compose-mongoose'; export const UserSchema = new mongoose.Schema( { - name: { + firstName: { type: String, - trim: true, required: true, }, + + lastName: { + type: String, + required: true, + }, + + password: { + type: String, + required: true, + }, + email: { type: String, lowercase: true, - trim: true, unique: true, required: true, }, + + isActive: { + type: Boolean, + required: true, + default: 1 + }, }, { collection: 'users', diff --git a/server/src/schema/appointment.js b/server/src/schema/appointment.js new file mode 100644 index 0000000..552dfd9 --- /dev/null +++ b/server/src/schema/appointment.js @@ -0,0 +1,51 @@ +import { Appointment, AppointmentTC } from '../models/appointment.js'; + +async function feed(parent, args, context, info) { + + const where = args.filter + ? { + OR: [ + { title: { contains: args.filter } }, + { description: { contains: args.filter } } + ] + } + : {}; + console.log(context.mongo); + const appointments = await context.mongo.appointment.findMany({ + where, + skip: args.skip, + take: args.take, + orderBy: args.orderBy + }); + + const count = await context.mongo.appointment.count({ where }); + + return { + id: 'main-feed', + appointments, + count + }; +} + +const AppointmentQuery = { + appointmentById: AppointmentTC.getResolver('findById'), + appointmentByIds: AppointmentTC.getResolver('findByIds'), + appointmentOne: AppointmentTC.getResolver('findOne'), + appointmentMany: AppointmentTC.getResolver('findMany'), + appointmentCount: AppointmentTC.getResolver('count'), + appointmentConnection: AppointmentTC.getResolver('connection'), + appointmentPagination: AppointmentTC.getResolver('pagination'), +}; + +const AppointmentMutation = { + appointmentCreateOne: AppointmentTC.getResolver('createOne'), + appointmentCreateMany: AppointmentTC.getResolver('createMany'), + appointmentUpdateById: AppointmentTC.getResolver('updateById'), + appointmentUpdateOne: AppointmentTC.getResolver('updateOne'), + appointmentUpdateMany: AppointmentTC.getResolver('updateMany'), + appointmentRemoveById: AppointmentTC.getResolver('removeById'), + appointmentRemoveOne: AppointmentTC.getResolver('removeOne'), + appointmentRemoveMany: AppointmentTC.getResolver('removeMany'), +}; + +export { AppointmentQuery, AppointmentMutation }; \ No newline at end of file diff --git a/server/src/schema/index.js b/server/src/schema/index.js index 3dd4cd2..72db71f 100644 --- a/server/src/schema/index.js +++ b/server/src/schema/index.js @@ -5,16 +5,16 @@ import db from '../utils/db.js'; const schemaComposer = new SchemaComposer(); import { UserQuery, UserMutation } from './user.js'; -import { TaskQuery, TaskMutation } from './task.js'; +import { AppointmentQuery, AppointmentMutation } from './appointment.js'; schemaComposer.Query.addFields({ ...UserQuery, - ...TaskQuery, + ...AppointmentQuery, }); schemaComposer.Mutation.addFields({ ...UserMutation, - ...TaskMutation, + ...AppointmentMutation, }); export default schemaComposer.buildSchema(); \ No newline at end of file diff --git a/server/src/schema/task.js b/server/src/schema/task.js deleted file mode 100644 index b00028d..0000000 --- a/server/src/schema/task.js +++ /dev/null @@ -1,24 +0,0 @@ -import { Task, TaskTC } from '../models/task.js'; - -const TaskQuery = { - taskById: TaskTC.getResolver('findById'), - taskByIds: TaskTC.getResolver('findByIds'), - taskOne: TaskTC.getResolver('findOne'), - taskMany: TaskTC.getResolver('findMany'), - taskCount: TaskTC.getResolver('count'), - taskConnection: TaskTC.getResolver('connection'), - taskPagination: TaskTC.getResolver('pagination'), -}; - -const TaskMutation = { - taskCreateOne: TaskTC.getResolver('createOne'), - taskCreateMany: TaskTC.getResolver('createMany'), - taskUpdateById: TaskTC.getResolver('updateById'), - taskUpdateOne: TaskTC.getResolver('updateOne'), - taskUpdateMany: TaskTC.getResolver('updateMany'), - taskRemoveById: TaskTC.getResolver('removeById'), - taskRemoveOne: TaskTC.getResolver('removeOne'), - taskRemoveMany: TaskTC.getResolver('removeMany'), -}; - -export { TaskQuery, TaskMutation }; \ No newline at end of file