immich/server/src/interfaces/user.repository.ts

38 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-03-20 16:02:51 -05:00
import { UserEntity } from 'src/entities/user.entity';
export interface UserListFilter {
withDeleted?: boolean;
}
2023-03-21 22:49:19 -04:00
export interface UserStatsQueryResponse {
userId: string;
userName: string;
2023-03-21 22:49:19 -04:00
photos: number;
videos: number;
usage: number;
quotaSizeInBytes: number | null;
2023-03-21 22:49:19 -04:00
}
2023-10-31 11:01:32 -04:00
export interface UserFindOptions {
withDeleted?: boolean;
}
export const IUserRepository = 'IUserRepository';
export interface IUserRepository {
2023-10-31 11:01:32 -04:00
get(id: string, options: UserFindOptions): Promise<UserEntity | null>;
getAdmin(): Promise<UserEntity | null>;
hasAdmin(): Promise<boolean>;
getByEmail(email: string, withPassword?: boolean): Promise<UserEntity | null>;
getByStorageLabel(storageLabel: string): Promise<UserEntity | null>;
getByOAuthId(oauthId: string): Promise<UserEntity | null>;
getDeletedUsers(): Promise<UserEntity[]>;
getList(filter?: UserListFilter): Promise<UserEntity[]>;
2023-03-21 22:49:19 -04:00
getUserStats(): Promise<UserStatsQueryResponse[]>;
create(user: Partial<UserEntity>): Promise<UserEntity>;
update(id: string, user: Partial<UserEntity>): Promise<UserEntity>;
delete(user: UserEntity, hard?: boolean): Promise<UserEntity>;
updateUsage(id: string, delta: number): Promise<void>;
syncUsage(id?: string): Promise<void>;
}