diff --git a/src/models/animals.model.js b/src/models/animals.model.js index bfe9705..0a56eec 100644 --- a/src/models/animals.model.js +++ b/src/models/animals.model.js @@ -49,7 +49,7 @@ module.exports = function (app) { type: Schema.Types.ObjectId, required: true }, - race: { + breed: { type: Schema.Types.ObjectId, required: false }, diff --git a/src/models/breeds.model.js b/src/models/breeds.model.js new file mode 100644 index 0000000..50d08e8 --- /dev/null +++ b/src/models/breeds.model.js @@ -0,0 +1,23 @@ + + +module.exports = function (app) { + const mongooseClient = app.get('mongooseClient'); + const { Schema } = mongooseClient; + const breeds = new Schema({ + displayName: { + type: String, + required: true + }, + default: { + type: Boolean, + default: false, + required: true + } + }, { + collection: 'breeds', + versionKey: false, + timestamp: true + }); + + return mongooseClient.model('breeds', breeds); +}; diff --git a/src/models/species.model.js b/src/models/species.model.js new file mode 100644 index 0000000..439b05a --- /dev/null +++ b/src/models/species.model.js @@ -0,0 +1,23 @@ + + +module.exports = function (app) { + const mongooseClient = app.get('mongooseClient'); + const { Schema } = mongooseClient; + const species = new Schema({ + displayName: { + type: String, + required: true + }, + default: { + type: Boolean, + default: false, + required: true + } + }, { + collection: 'species', + versionKey: false, + timestamp: true + }); + + return mongooseClient.model('species', species); +}; diff --git a/src/services/breeds/breeds.hooks.js b/src/services/breeds/breeds.hooks.js new file mode 100644 index 0000000..cd46037 --- /dev/null +++ b/src/services/breeds/breeds.hooks.js @@ -0,0 +1,40 @@ +const local = require('@feathersjs/authentication-local'); +const { authenticate } = require('@feathersjs/authentication').hooks; + +module.exports = { + before: { + all: [ + // authenticate('jwt') + ], + find: [], + get: [], + create: [ + // local.hooks.hashPassword() + ], + update: [], + patch: [], + remove: [] + }, + + after: { + all: [ + // local.hooks.protect('password') + ], + find: [], + get: [], + create: [], + update: [], + patch: [], + remove: [] + }, + + error: { + all: [], + find: [], + get: [], + create: [], + update: [], + patch: [], + remove: [] + } +}; diff --git a/src/services/breeds/breeds.service.js b/src/services/breeds/breeds.service.js new file mode 100644 index 0000000..858023c --- /dev/null +++ b/src/services/breeds/breeds.service.js @@ -0,0 +1,33 @@ + + +// Initializes the `Breed` service on path `/breeds` +const createService = require('feathers-mongoose'); +const createModel = require('../../models/breeds.model'); +const hooks = require('./breeds.hooks'); +const m2s = require('mongoose-to-swagger'); + +module.exports = function (app) { + const Model = createModel(app); + const paginate = app.get('paginate'); + + const options = { + Model, + paginate + }; + + const service = createService(options); + + service.docs = { + description: 'A service to manage breeds', + definitions: { + breeds: m2s(Model) + }, + 'breeds list': { + type: 'array', + items: { $ref: '#definitions/breeds' } + } + }; + + app.use('/breeds', service); + app.service('breeds').hooks(hooks); +}; diff --git a/src/services/index.js b/src/services/index.js index 8215fb2..c03c43e 100644 --- a/src/services/index.js +++ b/src/services/index.js @@ -3,9 +3,13 @@ const animals = require('./animals/animals.service.js'); const contracts = require('./contracts/contracts.service.js'); const humans = require('./humans/humans.service.js'); +const species = require('./species/species.service.js'); +const breeds = require('./breeds/breeds.service.js'); // eslint-disable-next-line no-unused-vars module.exports = function (app) { app.configure(animals); app.configure(contracts); app.configure(humans); + app.configure(species); + app.configure(breeds); }; diff --git a/src/services/species/species.hooks.js b/src/services/species/species.hooks.js new file mode 100644 index 0000000..cd46037 --- /dev/null +++ b/src/services/species/species.hooks.js @@ -0,0 +1,40 @@ +const local = require('@feathersjs/authentication-local'); +const { authenticate } = require('@feathersjs/authentication').hooks; + +module.exports = { + before: { + all: [ + // authenticate('jwt') + ], + find: [], + get: [], + create: [ + // local.hooks.hashPassword() + ], + update: [], + patch: [], + remove: [] + }, + + after: { + all: [ + // local.hooks.protect('password') + ], + find: [], + get: [], + create: [], + update: [], + patch: [], + remove: [] + }, + + error: { + all: [], + find: [], + get: [], + create: [], + update: [], + patch: [], + remove: [] + } +}; diff --git a/src/services/species/species.service.js b/src/services/species/species.service.js new file mode 100644 index 0000000..f877712 --- /dev/null +++ b/src/services/species/species.service.js @@ -0,0 +1,33 @@ + + +// Initializes the `Species` service on path `/species` +const createService = require('feathers-mongoose'); +const createModel = require('../../models/species.model'); +const hooks = require('./species.hooks'); +const m2s = require('mongoose-to-swagger'); + +module.exports = function (app) { + const Model = createModel(app); + const paginate = app.get('paginate'); + + const options = { + Model, + paginate + }; + + const service = createService(options); + + service.docs = { + description: 'A service to manage species', + definitions: { + species: m2s(Model) + }, + 'species list': { + type: 'array', + items: { $ref: '#definitions/species' } + } + }; + + app.use('/species', service); + app.service('species').hooks(hooks); +};