settings/models/API_Products.js

56 lines
1.7 KiB
JavaScript
Raw Normal View History

2025-06-10 17:15:34 +00:00
const mongoose = require('../db/connect');
const { Schema } = mongoose;
/**
* @description Sub-schema para o histórico de preços.
* A opção `strict: false` permite adicionar campos de preço dinâmicos (ex: tokenPrice, sttSecondPrice)
* que podem variar conforme o `pricingModel` do produto principal.
* A opção `_id: false` evita que o Mongoose crie um ObjectId para cada entrada no histórico.
*/
const priceHistorySchema = new Schema({
startDate: {
type: Date,
required: [true, 'A data de início da vigência é obrigatória.'],
},
endDate: {
type: Date,
default: null, // Um valor nulo significa que o preço está atualmente vigente.
},
// price: {
// type: String,
// required: [true, 'O preço é obrigatório'],
// }
}, { _id: false, strict: false });
/**
* @description Schema principal para os produtos da API.
*/
const apiProductSchema = new Schema({
name: {
type: String,
required: [true, 'O nome do produto é obrigatório.'],
trim: true,
unique: true, // Garante que não hajam produtos com o mesmo nome.
},
description: {
type: String,
trim: true,
},
// pricingModel: {
// type: String,
// required: [true, 'O modelo de precificação é obrigatório.'],
// trim: true,
// },
priceHistory: {
type: [priceHistorySchema],
default: [], // O produto pode ser criado sem um histórico de preços inicial.
},
}, {
timestamps: true, // Adiciona os campos `createdAt` e `updatedAt` automaticamente.
});
const API_Products = mongoose.model('API_Products', apiProductSchema);
module.exports = API_Products;