You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.2 KiB

3 years ago
import mongoose from 'mongoose'
import { factory } from 'factory-girl'
const globalAny = global as any
// @ts-ignore
const NestedObject = new mongoose.Schema({
someProperty: Number,
})
// @ts-ignore
const SubType = new mongoose.Schema({
name: String,
surname: String,
age: Number,
nestedArray: [NestedObject],
nestedObject: NestedObject,
})
globalAny.User = mongoose.model('User', new mongoose.Schema({
email: { type: String, required: true },
passwordHash: { type: String, required: true },
genre: { type: String, enum: ['male', 'female'] },
arrayed: [String],
parent: SubType,
family: [SubType],
}))
globalAny.Pesel = mongoose.model('Pesel', new mongoose.Schema({
pesel: {
type: String, unique: true, required: true, sparse: true,
},
}))
globalAny.Article = mongoose.model('Article', new mongoose.Schema({
content: String,
owners: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
}],
createdBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
},
}))
export const { User, Article, Pesel }: Record<string, mongoose.Model<any>> = globalAny
factory.define('user', User, {
email: factory.sequence('User.email', n => `john@doe${n}.com`),
passwordHash: 'somehashedpassword',
})