File size: 2,107 Bytes
11f4e50 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | import mongoose, { Schema, Document } from 'mongoose';
export interface IPreset extends Document {
userId: mongoose.Types.ObjectId;
name: string;
voice: {
type: string;
language: string;
tone: string;
speed: number;
};
music: string;
fonts: {
primary: string;
secondary: string;
};
colors: {
primary: string;
secondary: string;
accent: string;
};
transitions: string;
videoStyle: string;
}
const PresetSchema = new Schema<IPreset>({
userId: {
type: Schema.Types.ObjectId,
ref: 'User',
required: true,
},
name: {
type: String,
required: true,
trim: true,
},
voice: {
type: {
type: String,
default: 'neutral',
},
language: {
type: String,
default: 'en',
},
tone: {
type: String,
default: 'professional',
},
speed: {
type: Number,
default: 1.0,
},
},
music: {
type: String,
default: '',
},
fonts: {
primary: {
type: String,
default: 'Playfair Display',
},
secondary: {
type: String,
default: 'Montserrat',
},
},
colors: {
primary: {
type: String,
default: '#1A1A1A',
},
secondary: {
type: String,
default: '#F5F5F5',
},
accent: {
type: String,
default: '#D4AF37',
},
},
transitions: {
type: String,
enum: ['fade', 'slide', 'zoom', 'dissolve', 'none'],
default: 'fade',
},
videoStyle: {
type: String,
enum: ['minimal', 'dynamic', 'cinematic', 'bold', 'elegant'],
default: 'minimal',
},
});
export const Preset = mongoose.model<IPreset>('Preset', PresetSchema);
|