UNPKG

gymspace-shared

Version:

Shared types and interfaces for GymSpace

185 lines (164 loc) 5.03 kB
// Permission constants export const PERMISSIONS = { // Organizations ORGANIZATIONS_CREATE: 'ORGANIZATIONS_CREATE', ORGANIZATIONS_READ: 'ORGANIZATIONS_READ', ORGANIZATIONS_UPDATE: 'ORGANIZATIONS_UPDATE', ORGANIZATIONS_DELETE: 'ORGANIZATIONS_DELETE', // Gyms GYMS_CREATE: 'GYMS_CREATE', GYMS_READ: 'GYMS_READ', GYMS_UPDATE: 'GYMS_UPDATE', GYMS_DELETE: 'GYMS_DELETE', // Collaborators COLLABORATORS_CREATE: 'COLLABORATORS_CREATE', COLLABORATORS_READ: 'COLLABORATORS_READ', COLLABORATORS_UPDATE: 'COLLABORATORS_UPDATE', COLLABORATORS_DELETE: 'COLLABORATORS_DELETE', // Clients CLIENTS_CREATE: 'CLIENTS_CREATE', CLIENTS_READ: 'CLIENTS_READ', CLIENTS_UPDATE: 'CLIENTS_UPDATE', CLIENTS_DELETE: 'CLIENTS_DELETE', // Contracts CONTRACTS_CREATE: 'CONTRACTS_CREATE', CONTRACTS_READ: 'CONTRACTS_READ', CONTRACTS_UPDATE: 'CONTRACTS_UPDATE', CONTRACTS_APPROVE: 'CONTRACTS_APPROVE', CONTRACTS_CANCEL: 'CONTRACTS_CANCEL', // Evaluations EVALUATIONS_CREATE: 'EVALUATIONS_CREATE', EVALUATIONS_READ: 'EVALUATIONS_READ', EVALUATIONS_UPDATE: 'EVALUATIONS_UPDATE', EVALUATIONS_DELETE: 'EVALUATIONS_DELETE', // Check-ins CHECKINS_CREATE: 'CHECKINS_CREATE', CHECKINS_READ: 'CHECKINS_READ', // Leads LEADS_CREATE: 'LEADS_CREATE', LEADS_READ: 'LEADS_READ', LEADS_UPDATE: 'LEADS_UPDATE', LEADS_DELETE: 'LEADS_DELETE', // Reports REPORTS_VIEW: 'REPORTS_VIEW', REPORTS_FINANCIAL: 'REPORTS_FINANCIAL', // Settings SETTINGS_UPDATE: 'SETTINGS_UPDATE', // Assets ASSETS_CREATE: 'ASSETS_CREATE', ASSETS_READ: 'ASSETS_READ', ASSETS_DELETE: 'ASSETS_DELETE', // Files FILES_CREATE: 'FILES_CREATE', FILES_READ: 'FILES_READ', FILES_DELETE: 'FILES_DELETE', // Products PRODUCTS_CREATE: 'PRODUCTS_CREATE', PRODUCTS_READ: 'PRODUCTS_READ', PRODUCTS_UPDATE: 'PRODUCTS_UPDATE', PRODUCTS_DELETE: 'PRODUCTS_DELETE', // Product Categories PRODUCT_CATEGORIES_CREATE: 'PRODUCT_CATEGORIES_CREATE', PRODUCT_CATEGORIES_READ: 'PRODUCT_CATEGORIES_READ', PRODUCT_CATEGORIES_UPDATE: 'PRODUCT_CATEGORIES_UPDATE', PRODUCT_CATEGORIES_DELETE: 'PRODUCT_CATEGORIES_DELETE', // Sales SALES_CREATE: 'SALES_CREATE', SALES_READ: 'SALES_READ', SALES_UPDATE: 'SALES_UPDATE', SALES_DELETE: 'SALES_DELETE', // Suppliers SUPPLIERS_CREATE: 'SUPPLIERS_CREATE', SUPPLIERS_READ: 'SUPPLIERS_READ', SUPPLIERS_UPDATE: 'SUPPLIERS_UPDATE', SUPPLIERS_DELETE: 'SUPPLIERS_DELETE', } as const; // Role definitions export const ROLE_PERMISSIONS = { OWNER: Object.values(PERMISSIONS), MANAGER: [ PERMISSIONS.GYMS_READ, PERMISSIONS.COLLABORATORS_READ, PERMISSIONS.CLIENTS_CREATE, PERMISSIONS.CLIENTS_READ, PERMISSIONS.CLIENTS_UPDATE, PERMISSIONS.CONTRACTS_CREATE, PERMISSIONS.CONTRACTS_READ, PERMISSIONS.EVALUATIONS_CREATE, PERMISSIONS.EVALUATIONS_READ, PERMISSIONS.EVALUATIONS_UPDATE, PERMISSIONS.CHECKINS_CREATE, PERMISSIONS.CHECKINS_READ, PERMISSIONS.REPORTS_VIEW, PERMISSIONS.ASSETS_CREATE, PERMISSIONS.ASSETS_READ, PERMISSIONS.ASSETS_DELETE, PERMISSIONS.FILES_CREATE, PERMISSIONS.FILES_READ, PERMISSIONS.FILES_DELETE, PERMISSIONS.PRODUCTS_CREATE, PERMISSIONS.PRODUCTS_READ, PERMISSIONS.PRODUCTS_UPDATE, PERMISSIONS.PRODUCTS_DELETE, PERMISSIONS.PRODUCT_CATEGORIES_CREATE, PERMISSIONS.PRODUCT_CATEGORIES_READ, PERMISSIONS.PRODUCT_CATEGORIES_UPDATE, PERMISSIONS.PRODUCT_CATEGORIES_DELETE, PERMISSIONS.SALES_CREATE, PERMISSIONS.SALES_READ, PERMISSIONS.SALES_UPDATE, PERMISSIONS.SUPPLIERS_CREATE, PERMISSIONS.SUPPLIERS_READ, PERMISSIONS.SUPPLIERS_UPDATE, PERMISSIONS.SUPPLIERS_DELETE, ], STAFF: [ PERMISSIONS.CLIENTS_READ, PERMISSIONS.CHECKINS_CREATE, PERMISSIONS.CHECKINS_READ, PERMISSIONS.PRODUCTS_READ, PERMISSIONS.PRODUCT_CATEGORIES_READ, PERMISSIONS.SALES_CREATE, PERMISSIONS.SALES_READ, ], ADVISOR: [ PERMISSIONS.CLIENTS_READ, PERMISSIONS.EVALUATIONS_CREATE, PERMISSIONS.EVALUATIONS_READ, PERMISSIONS.EVALUATIONS_UPDATE, PERMISSIONS.ASSETS_CREATE, PERMISSIONS.ASSETS_READ, PERMISSIONS.FILES_CREATE, PERMISSIONS.FILES_READ, ], } as const; // Cache TTL values (in seconds) export const CACHE_TTL = { USER_PERMISSIONS: 900, // 15 minutes GYM_DATA: 1800, // 30 minutes STATIC_DATA: 3600, // 60 minutes REPORTS: 300, // 5 minutes } as const; // File size limits (in bytes) export const FILE_LIMITS = { MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 5MB MAX_DOCUMENT_SIZE: 10 * 1024 * 1024, // 10MB } as const; // Pagination defaults export const PAGINATION_DEFAULTS = { PAGE: 1, LIMIT: 20, MAX_LIMIT: 100, } as const; // Date formats export const DATE_FORMATS = { DATE_ONLY: 'YYYY-MM-DD', DATETIME: 'YYYY-MM-DD HH:mm:ss', TIME_ONLY: 'HH:mm:ss', } as const; // Headers export const HEADERS = { GYM_ID: 'X-Gym-Id', REQUEST_ID: 'X-Request-Id', } as const;