Files
MOHPortalTest-AllAgents-All…/qwen/nodejs/models/Tenant.js

41 lines
1.0 KiB
JavaScript

// models/Tenant.js
// Tenant model definition
class Tenant {
constructor(id, name, subdomain, settings, createdAt, updatedAt) {
this.id = id;
this.name = name;
this.subdomain = subdomain;
this.settings = settings || {};
this.createdAt = createdAt || new Date();
this.updatedAt = updatedAt || new Date();
}
// Static method to create a new tenant
static create(tenantData) {
const id = tenantData.id || require('uuid').v4();
return new Tenant(
id,
tenantData.name,
tenantData.subdomain,
tenantData.settings
);
}
// Method to validate a tenant
validate() {
if (!this.name || !this.subdomain) {
throw new Error('Tenant name and subdomain are required');
}
// Validate subdomain format (alphanumeric and hyphens only)
const subdomainRegex = /^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$/;
if (!subdomainRegex.test(this.subdomain)) {
throw new Error('Invalid subdomain format');
}
return true;
}
}
module.exports = Tenant;