95 lines
2.2 KiB
TypeScript
95 lines
2.2 KiB
TypeScript
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;
|