appwrite-database-repository
Version:
44 lines (43 loc) • 3.37 kB
TypeScript
import { Client, Databases, IndexType, Models } from 'node-appwrite';
import { ClientWithToken } from './domain/client-with-token';
import { PermissionType } from './domain/permission-type.enum';
import { Document } from './domain/document.type';
type PartialDocumentType = Omit<Document, keyof Document>;
export declare class AppwriteRepository<Schema extends PartialDocumentType> {
private readonly client;
protected readonly databaseId: string;
protected readonly collectionId: string;
protected databases: Databases;
constructor(client: Client | ClientWithToken, databaseId: string, collectionId: string);
attributeExistsByKey(key: string): Promise<boolean>;
listDocuments(queries?: string[]): Promise<Models.DocumentList<Schema & Document>>;
listByProperties(properties: Partial<Schema>, extraQueries?: string[]): Promise<Models.DocumentList<Schema & Document>>;
createDocument(data: Schema, permissions?: string[]): Promise<Schema & Document>;
createDocumentWithId(documentId: string, data: Schema, permissions?: string[]): Promise<Schema & Document>;
getDocument(documentId: string, queries?: string[]): Promise<(Schema & Document) | null>;
getDocumentBy(query: Partial<Schema & Document>): Promise<Schema & Document | null>;
updateDocument(documentId: string, data?: Partial<Schema>, permissions?: string[]): Promise<Schema & Document>;
deleteDocument(documentId: string): Promise<void>;
createOrUpdateDocument(query: Partial<Schema & Document>, data: Schema, permissions?: string[]): Promise<Schema & Document>;
createOrUpdateBooleanAttribute(key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise<void>;
createOrUpdateStringAttribute(key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise<void>;
createOrUpdateDateTimeAttribute(key: string, required: boolean, xdefault?: string, array?: boolean): Promise<void>;
createOrUpdateEmailAttribute(key: string, required: boolean, xdefault?: string, array?: boolean): Promise<void>;
createOrUpdateEnumAttribute(key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise<void>;
createOrUpdateFloatAttribute(key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise<void>;
createOrUpdateIntegerAttribute(key: string, required: boolean, min?: number, max?: number, xdefault?: number): Promise<void>;
createOrUpdateIndex(key: string, type: IndexType, attributes: string[], orders?: string[]): Promise<Models.Index>;
getIndex(key: string): Promise<Models.Index>;
private attributeExists;
private getAttribute;
deleteAttribute(key: string): Promise<void>;
getCollection(): Promise<Models.Collection>;
createOrUpdateCollection(name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise<Models.Collection>;
hasCollectionPermission(client: ClientWithToken, permissionType: PermissionType): Promise<boolean>;
hasDocumentPermission(client: ClientWithToken, document: Document, permissionType: PermissionType): Promise<boolean>;
private hasPermission;
private getTeamIdFromTeamRolePermission;
private findAllTeams;
asAppClient(client: ClientWithToken): AppwriteRepository<Schema>;
}
export {};