kritsana135-hooray-server
Version:
for server
101 lines (94 loc) • 2.7 kB
JavaScript
import mongoose from "mongoose"
import validator from "validator"
import { ApolloError } from "apollo-server"
import mongooseDelete from "mongoosejs-soft-delete"
import mongoosePaginate from "mongoose-paginate-v2"
import { CAN_NOT_SAVE_TO_DB } from "../constants/errors/utils"
const schema = new mongoose.Schema(
{
name: {
type: String,
required: [true, "Name is required"],
trim: true,
},
serviceKey: {
type: String,
required: [true, "ServiceKey is required"],
trim: true,
},
logo: {
type: String,
trim: true,
},
methodUpdate: {
type: String,
required: [false, "methodUpddate is required"],
trim: true,
},
graphqlEndpointSuperAdmin: {
type: String,
required: [true, "graphql Endpoint Admin is required"],
trim: true,
},
graphqlEndpointAdmin: {
type: String,
required: [true, "graphql Endpoint Admin is required"],
trim: true,
},
graphqlEndpointClient: {
type: String,
required: [false, "graphql Endpoint Client is required"],
trim: true,
},
restEndpointSuperAdmin: {
type: String,
required: [false, "restful Endpoint Admin is required"],
trim: true,
},
restEndpointAdmin: {
type: String,
required: [false, "restful Endpoint Admin is required"],
trim: true,
},
restEndpointClient: {
type: String,
required: [false, "restful Endpoint Client is required"],
trim: true,
},
// appUpdateServiceUrl: {
// type: String,
// required: [false, 'appUpdateServiceUrl is required'],
// trim: true,
// },
isActive: {
type: Boolean,
required: [false, "isActive is required"],
trim: true,
default: true,
},
// featureKeys: [feature],
// userPermissions: [userPermission]
},
{ timestamps: true, versionKey: false }
)
schema.plugin(mongooseDelete)
schema.plugin(mongoosePaginate)
schema.pre("save", async (next) => {
next()
})
// schema.post('find', function(result) {
// console.log(this instanceof mongoose.Query); // true
// // prints returned documents
// console.log('find() returned ' + JSON.stringify(result));
// // prints number of milliseconds the query took
// console.log('find() took ' + (Date.now() - this.start) + ' millis');
// // new ApolloError("Test Pre find before update")
// });
schema.post("save", (error, doc, next) => {
if (error.code === 11000) {
next(
new ApolloError(CAN_NOT_SAVE_TO_DB.message.en, CAN_NOT_SAVE_TO_DB.code)
)
} else next(error)
})
export default (connection) => connection.model("services", schema, "services")