46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
import mongoose, { Schema, Document } from 'mongoose'
|
|
|
|
export interface ISystemSettings extends Document {
|
|
maintenanceMode: boolean
|
|
registrationEnabled: boolean
|
|
emailVerificationRequired: boolean
|
|
maxUserBalance: number
|
|
defaultUserRole: 'user' | 'admin'
|
|
systemMessage: string
|
|
paymentGatewayEnabled: boolean
|
|
developerHireEnabled: boolean
|
|
vpsDeploymentEnabled: boolean
|
|
kubernetesDeploymentEnabled: boolean
|
|
vpnServiceEnabled: boolean
|
|
lastUpdated: Date
|
|
updatedBy: string
|
|
}
|
|
|
|
const SystemSettingsSchema = new Schema<ISystemSettings>(
|
|
{
|
|
maintenanceMode: { type: Boolean, default: false },
|
|
registrationEnabled: { type: Boolean, default: true },
|
|
emailVerificationRequired: { type: Boolean, default: true },
|
|
maxUserBalance: { type: Number, default: 1000000 },
|
|
defaultUserRole: { type: String, enum: ['user', 'admin'], default: 'user' },
|
|
systemMessage: { type: String, default: '' },
|
|
paymentGatewayEnabled: { type: Boolean, default: true },
|
|
developerHireEnabled: { type: Boolean, default: true },
|
|
vpsDeploymentEnabled: { type: Boolean, default: true },
|
|
kubernetesDeploymentEnabled: { type: Boolean, default: true },
|
|
vpnServiceEnabled: { type: Boolean, default: true },
|
|
lastUpdated: { type: Date, default: Date.now },
|
|
updatedBy: { type: String, default: 'System' },
|
|
},
|
|
{
|
|
timestamps: true,
|
|
}
|
|
)
|
|
|
|
// Ensure only one settings document exists
|
|
SystemSettingsSchema.index({}, { unique: true })
|
|
|
|
export const SystemSettings =
|
|
mongoose.models.SystemSettings ||
|
|
mongoose.model<ISystemSettings>('SystemSettings', SystemSettingsSchema)
|