kritsana135-hooray-server
Version:
for server
75 lines (67 loc) • 1.53 kB
JavaScript
import mongoose, { connection } from "mongoose"
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(
{
logo: {
type: String,
required: false,
trim: true,
},
logoDark: {
type: String,
required: false,
trim: true,
},
logoLight: {
type: String,
required: false,
trim: true,
},
favicon: {
type: String,
required: false,
trim: true,
},
webTitle: {
type: String,
required: false,
trim: true,
},
background: {
type: String,
required: false,
trim: true,
},
primaryColor: {
type: String,
required: false,
trim: true,
default: "#ffffff",
},
secondaryColor: {
type: String,
required: false,
trim: true,
default: "#ffffff",
},
},
{ timestamps: true }
)
schema.plugin(mongooseDelete)
schema.plugin(mongoosePaginate)
schema.pre("save", async function (next) {
// Hash the password before saving the user model
next()
})
schema.post("save", (error, doc, next) => {
if (error.code === 11000) {
console.log(error)
next(
new ApolloError(CAN_NOT_SAVE_TO_DB.message.en, CAN_NOT_SAVE_TO_DB.code)
)
} else next(error)
})
export default (connection) => connection.model("themes", schema, "themes")