Files
cloud-host/backend/src/common/enums.ts
T
2026-05-18 21:34:47 +03:30

157 lines
3.8 KiB
TypeScript

// Shared enums used across the platform
export enum UserRole {
USER = 'user',
ADMIN = 'admin',
TECHNICAL = 'technical',
SALES = 'sales',
}
export enum TicketDepartment {
TECHNICAL = 'technical',
SALES = 'sales',
}
export enum TicketStatus {
OPEN = 'open',
ANSWERED = 'answered',
WAITING = 'waiting', // waiting for staff reply
CLOSED = 'closed',
}
export enum TicketPriority {
LOW = 'low',
MEDIUM = 'medium',
HIGH = 'high',
}
export enum AppRuntime {
NODEJS = 'nodejs',
LARAVEL = 'laravel',
WORDPRESS = 'wordpress',
GO = 'go',
PHP = 'php',
PYTHON = 'python',
DJANGO = 'django',
DOTNET = 'dotnet',
}
export enum DatabaseType {
MYSQL = 'mysql',
POSTGRESQL = 'postgresql',
MONGODB = 'mongodb',
MARIADB = 'mariadb',
NONE = 'none',
}
// Optional services that can be attached to an application
export enum OptionalService {
REDIS = 'redis',
RABBITMQ = 'rabbitmq',
ELASTICSEARCH = 'elasticsearch',
}
/** Targets for time-limited external access via temporary NodePort */
export enum ServiceAccessTarget {
DATABASE = 'database',
REDIS = 'redis',
RABBITMQ_AMQP = 'rabbitmq_amqp',
RABBITMQ_MANAGEMENT = 'rabbitmq_management',
}
export enum ServiceAccessGrantStatus {
ACTIVE = 'active',
EXPIRED = 'expired',
REVOKED = 'revoked',
}
export enum DeploymentStatus {
PENDING = 'pending',
BUILDING = 'building',
BUILD_FAILED = 'build_failed',
DEPLOYING = 'deploying',
RUNNING = 'running',
FAILED = 'failed',
STOPPED = 'stopped',
DELETING = 'deleting',
}
export enum ClusterStatus {
ACTIVE = 'active',
INACTIVE = 'inactive',
MAINTENANCE = 'maintenance',
}
export enum BuildStatus {
QUEUED = 'queued',
IN_PROGRESS = 'in_progress',
SUCCESS = 'success',
FAILED = 'failed',
}
export enum BillingCycle {
HOURLY = 'hourly',
MONTHLY = 'monthly',
YEARLY = 'yearly',
}
export enum PricingResourceType {
BASE_FEE = 'base_fee', // Base fee per runtime type
CPU_PER_CORE = 'cpu_per_core', // Price per CPU core
MEMORY_PER_GB = 'memory_per_gb', // Price per GB RAM
STORAGE_PER_GB = 'storage_per_gb', // Price per GB disk
DATABASE_ADDON = 'database_addon', // Price for database addon
REDIS_ADDON = 'redis_addon', // Price for Redis addon
RABBITMQ_ADDON = 'rabbitmq_addon', // Price for RabbitMQ addon
ELASTICSEARCH_ADDON = 'elasticsearch_addon', // Price for Elasticsearch addon
CUSTOM_DOMAIN_ADDON = 'custom_domain_addon', // Price for custom domain with SSL
}
export enum TransactionType {
CHARGE = 'charge', // Top-up / deposit
DEDUCTION = 'deduction', // Payment for service
REFUND = 'refund', // Refund
GATEWAY_PAYMENT = 'gateway_payment', // Direct payment through a gateway
}
export enum InvoiceStatus {
DRAFT = 'draft',
ISSUED = 'issued',
PARTIALLY_PAID = 'partially_paid',
PAID = 'paid',
VOID = 'void',
FAILED = 'failed',
}
export enum PaymentMethod {
WALLET = 'wallet',
GATEWAY = 'gateway',
MIXED = 'mixed',
}
export enum InvoiceReason {
DEPLOY = 'deploy',
RENEWAL = 'renewal',
UPGRADE = 'upgrade',
WALLET_TOPUP = 'wallet_topup',
MANUAL = 'manual',
}
// ── Custom Domain ────────────────────────────────────
export enum CustomDomainStatus {
NONE = 'none',
PENDING_DNS = 'pending_dns',
VERIFIED = 'verified',
}
// ── Application Lifecycle ─────────────────────────────
export enum AppLifecycleStatus {
ACTIVE = 'active', // Paid & running
SUSPENDED = 'suspended', // Plan expired, pods scaled to 0, data retained
PENDING_DELETION = 'pending_deletion', // Grace period — will be deleted if no payment
DOCKED = 'docked', // User removed service; data retained until plan expires
DELETED = 'deleted', // Fully removed from K8s and DB
}