Spaces:
Running
Running
| const mongoose = require('mongoose'); | |
| const expenseSchema = new mongoose.Schema( | |
| { | |
| category: { | |
| type: String, | |
| required: [true, 'Expense must have a category'], | |
| enum: [ | |
| 'marketing', | |
| 'salaries', | |
| 'tools', | |
| 'hosting', | |
| 'shipping', | |
| 'packaging', | |
| 'rent', | |
| 'utilities', | |
| 'taxes', | |
| 'refunds', | |
| 'other', | |
| ], | |
| trim: true, | |
| }, | |
| amount: { | |
| type: Number, | |
| required: [true, 'Expense must have an amount'], | |
| min: [0, 'Amount must be positive'], | |
| }, | |
| date: { | |
| type: Date, | |
| required: [true, 'Expense must have a date'], | |
| default: Date.now, | |
| }, | |
| notes: { | |
| type: String, | |
| trim: true, | |
| default: '', | |
| }, | |
| createdBy: { | |
| type: mongoose.Schema.Types.ObjectId, | |
| ref: 'User', | |
| required: [true, 'Expense must be created by a user'], | |
| }, | |
| }, | |
| { | |
| timestamps: true, | |
| }, | |
| ); | |
| expenseSchema.index({ date: -1 }); | |
| expenseSchema.index({ category: 1 }); | |
| expenseSchema.index({ createdAt: -1 }); | |
| const Expense = mongoose.model('Expense', expenseSchema); | |
| module.exports = Expense; | |