UNPKG

appwrite-database-repository

Version:

44 lines (43 loc) 3.37 kB
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 {};