import { model, models, Schema, type InferSchemaType, type Model } from "mongoose"; import { TRANSACTION_TYPES } from "@/shared/transactions"; /** Satıcı / karşı taraf ve "akıllı giriş" kuralı: son kullanılan kategori ve hesap (Bölüm 6.3). */ const payeeSchema = new Schema( { householdId: { type: Schema.Types.ObjectId, required: true }, name: { type: String, required: true, trim: true, maxlength: 80 }, nameKey: { type: String, required: true }, lastType: { type: String, enum: TRANSACTION_TYPES, default: "expense" }, lastCategoryId: { type: Schema.Types.ObjectId, default: null }, lastAccountId: { type: Schema.Types.ObjectId, default: null }, useCount: { type: Number, default: 0 }, lastUsedAt: { type: Date, default: () => new Date() }, }, { timestamps: true, collection: "payees" }, ); payeeSchema.index({ householdId: 1, nameKey: 1 }, { unique: true }); payeeSchema.index({ householdId: 1, useCount: -1 }); export type Payee = InferSchemaType; export const PayeeModel: Model = (models.Payee as Model | undefined) ?? model("Payee", payeeSchema);