gitdb-database
Version:
A production-ready CLI tool for managing a NoSQL database using GitHub repositories as storage
72 lines • 2 kB
TypeScript
export interface SchemaField {
type: any;
required?: boolean;
default?: any;
min?: number;
max?: number;
ref?: string;
unique?: boolean;
index?: boolean;
validate?: (value: any) => boolean | string;
enum?: any[];
trim?: boolean;
lowercase?: boolean;
uppercase?: boolean;
}
export interface SchemaDefinition {
[key: string]: SchemaField;
}
export interface SchemaOptions {
timestamps?: boolean;
collection?: string;
strict?: boolean;
}
export declare class Schema {
private fields;
private options;
private indexes;
constructor(definition: SchemaDefinition, options?: SchemaOptions);
private setupIndexes;
index(fields: string | string[], options?: any): void;
validate(data: any): {
isValid: boolean;
errors: string[];
data: any;
};
private validateType;
private getTypeName;
getFields(): SchemaDefinition;
getOptions(): SchemaOptions;
getIndexes(): Array<{
fields: string[];
options?: any;
}>;
}
export declare const SchemaTypes: {
String: string;
Number: string;
Boolean: string;
Date: string;
Array: string;
Object: string;
ObjectId: string;
Mixed: string;
};
export declare class Model {
private schema;
private collection;
private databaseManager;
constructor(schema: Schema, collection: string, databaseManager: any);
create(data: any): Promise<any>;
findById(id: string): Promise<any>;
findOne(query: any): Promise<any>;
find(query?: any, limit?: number): Promise<any[]>;
updateById(id: string, data: any): Promise<any>;
updateMany(query: any, data: any): Promise<number>;
deleteById(id: string): Promise<boolean>;
deleteMany(query: any): Promise<number>;
count(query?: any): Promise<number>;
getSchema(): Schema;
}
export declare function model(name: string, schema: Schema, databaseManager: any): Model;
//# sourceMappingURL=schema.d.ts.map