41 lines
1.0 KiB
JavaScript
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; |