import GenericDBApi from './base.api.ts'; import db from '../models/index.ts'; import type { AccessLogAssociationConfig, AccessLogData, AccessLogFieldMapping, AccessLogRelationFilterConfig, } from '../../types/index.ts'; class Access_logsDBApi extends GenericDBApi { static override get MODEL(): unknown { return db.access_logs; } static override get TABLE_NAME(): string { return 'access_logs'; } static override get SEARCHABLE_FIELDS(): string[] { return ['path', 'ip_address', 'user_agent']; } static override get RANGE_FIELDS(): string[] { return ['accessed_at']; } static override get ENUM_FIELDS(): string[] { return ['environment']; } static override get CSV_FIELDS(): string[] { return [ 'id', 'environment', 'path', 'ip_address', 'user_agent', 'accessed_at', 'createdAt', ]; } static override get AUTOCOMPLETE_FIELD(): string { return 'path'; } static override get ASSOCIATIONS(): AccessLogAssociationConfig[] { return [ { field: 'project', setter: 'setProject', isArray: false }, { field: 'user', setter: 'setUser', isArray: false }, ]; } static override get FIND_BY_INCLUDES(): unknown[] { return [{ association: 'project' }, { association: 'user' }]; } static override get FIND_ALL_INCLUDES(): unknown[] { return [ { model: db.projects, as: 'project', required: false }, { model: db.users, as: 'user', required: false }, ]; } static override get RELATION_FILTERS(): AccessLogRelationFilterConfig[] { return [ { filterKey: 'project', model: db.projects, as: 'project', searchField: 'name', }, { filterKey: 'user', model: db.users, as: 'user', searchField: 'firstName', }, ]; } static override getFieldMapping(data: AccessLogData): AccessLogFieldMapping { return { id: data.id || undefined, environment: data.environment || null, path: data.path || null, ip_address: data.ip_address || null, user_agent: data.user_agent || null, accessed_at: data.accessed_at || null, }; } } export default Access_logsDBApi;