osr-root-router/src/common/api-key/interfaces/api-key.service.interface.ts
2024-05-25 10:36:47 +02:00

93 lines
2.5 KiB
TypeScript

import {
ApiKeyCreateDto,
ApiKeyCreateRawDto,
} from 'src/common/api-key/dtos/api-key.create.dto';
import { ApiKeyUpdateDateDto } from 'src/common/api-key/dtos/api-key.update-date.dto';
import { ApiKeyUpdateDto } from 'src/common/api-key/dtos/api-key.update.dto';
import { IApiKeyCreated } from 'src/common/api-key/interfaces/api-key.interface';
import {
ApiKeyDoc,
ApiKeyEntity,
} from 'src/common/api-key/repository/entities/api-key.entity';
import {
IDatabaseCreateOptions,
IDatabaseFindAllOptions,
IDatabaseFindOneOptions,
IDatabaseManyOptions,
IDatabaseOptions,
} from 'src/common/database/interfaces/database.interface';
export interface IApiKeyService {
findAll(
find?: Record<string, any>,
options?: IDatabaseFindAllOptions
): Promise<ApiKeyEntity[]>;
findOneById(
_id: string,
options?: IDatabaseFindOneOptions
): Promise<ApiKeyDoc>;
findOne(
find: Record<string, any>,
options?: IDatabaseFindOneOptions
): Promise<ApiKeyDoc>;
findOneByKey(
key: string,
options?: IDatabaseFindOneOptions
): Promise<ApiKeyDoc>;
findOneByActiveKey(
key: string,
options?: IDatabaseFindOneOptions
): Promise<ApiKeyDoc>;
getTotal(
find?: Record<string, any>,
options?: IDatabaseOptions
): Promise<number>;
create(
user: string,
{name, description, startDate, endDate}: ApiKeyCreateDto,
options?: IDatabaseCreateOptions
): Promise<IApiKeyCreated>;
createRaw(
user: string,
{name, description, key, secret, startDate, endDate}: ApiKeyCreateRawDto,
options?: IDatabaseCreateOptions
): Promise<IApiKeyCreated>;
active(repository: ApiKeyDoc): Promise<ApiKeyDoc>;
inactive(repository: ApiKeyDoc): Promise<ApiKeyDoc>;
update(repository: ApiKeyDoc, data: ApiKeyUpdateDto): Promise<ApiKeyDoc>;
updateDate(
repository: ApiKeyDoc,
{startDate, endDate}: ApiKeyUpdateDateDto
): Promise<ApiKeyDoc>;
reset(repository: ApiKeyDoc, secret: string): Promise<ApiKeyDoc>;
delete(repository: ApiKeyDoc): Promise<ApiKeyDoc>;
validateHashApiKey(hashFromRequest: string, hash: string): Promise<boolean>;
createKey(): Promise<string>;
createSecret(): Promise<string>;
createHashApiKey(key: string, secret: string): Promise<string>;
deleteMany(
find: Record<string, any>,
options?: IDatabaseManyOptions
): Promise<boolean>;
inactiveManyByEndDate(options?: IDatabaseManyOptions): Promise<boolean>;
}