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
			
		
		
			
		
	
	
					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',
							 | 
						||
| 
								 | 
							
								})
							 |