42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
const mongoose = require('mongoose');
|
|
|
|
/** Minimal record for public file proxy — not listed in admin UI. */
|
|
const aiAvatarOutputSchema = new mongoose.Schema(
|
|
{
|
|
aiAvatar: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'AiAvatar',
|
|
required: true,
|
|
},
|
|
event: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'Event',
|
|
required: true,
|
|
},
|
|
organization: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'Organization',
|
|
required: true,
|
|
},
|
|
template: {
|
|
type: mongoose.Schema.Types.ObjectId,
|
|
ref: 'AiAvatarTemplate',
|
|
required: true,
|
|
},
|
|
/** Visitor selfie */
|
|
url: { type: String, required: true },
|
|
s3Key: { type: String, required: true },
|
|
/** WaveSpeed result */
|
|
resultUrl: { type: String, default: null },
|
|
resultS3Key: { type: String, default: null },
|
|
mimeType: { type: String },
|
|
size: { type: Number },
|
|
originalFileName: { type: String },
|
|
},
|
|
{ timestamps: true },
|
|
);
|
|
|
|
aiAvatarOutputSchema.index({ aiAvatar: 1, createdAt: -1 });
|
|
|
|
module.exports = mongoose.model('AiAvatarOutput', aiAvatarOutputSchema);
|