neo4-js
Version:
Neo4j graphdb object graph mapper for javascript
78 lines (77 loc) • 2.48 kB
TypeScript
import { ModelInstance, BaseProps } from "./ModelInstance";
export declare type Optional<T> = T extends object ? {
[P in keyof T]+?: T[P];
} : T;
export declare type Property<T> = T extends string ? StringProperty : (T extends number ? NumberProperty : T);
export declare type PropertiesType<T> = T extends object ? {
[P in keyof T]: Property<T[P]>;
} : T;
export declare type HasManyActions<P, M extends ModelInstance<P, R>, R = {}> = {
get: (props?: Optional<PropertiesType<P & BaseProps>>, relationProps?: Optional<PropertiesType<R>>) => Promise<M[]>;
update: (props?: Optional<P>, where?: Optional<PropertiesType<P & BaseProps>>, relationProps?: PropertiesType<Optional<R>>, whereRelationProps?: Optional<PropertiesType<PropertiesType<R>>>) => Promise<M[]>;
create: (props: P[] | P, relationProps?: R) => Promise<M[]>;
add: (instances: M[] | M, relationProps?: R) => Promise<number>;
remove: (props?: Optional<PropertiesType<P & BaseProps>>, relationProps?: Optional<PropertiesType<R>>) => Promise<Neo4jResultStats>;
count: (props?: Optional<PropertiesType<P & BaseProps>>, relationProps?: Optional<PropertiesType<R>>) => Promise<number>;
};
export declare type HasOneActions<P, M extends ModelInstance<P>> = {
get: () => Promise<M | null>;
update: (props: Optional<P>) => Promise<M | null>;
create: (props: P) => Promise<M>;
add: (instance: M) => Promise<boolean>;
remove: () => Promise<Neo4jResultStats>;
hasOne: () => Promise<boolean>;
};
export declare type StringProperty = {
$sw: string;
} | {
$ew: string;
} | {
$contains: string;
} | {
$reg: string;
} | {
$eq: string;
} | {
$or: StringProperty[];
} | {
$and: StringProperty[];
} | {
$in: string[];
} | {
$not: StringProperty;
} | string;
export declare type NumberProperty = {
$gt: number;
} | {
$gte: number;
} | {
$lt: number;
} | {
$lte: number;
} | {
$eq: number;
} | {
$or: NumberProperty[];
} | {
$and: NumberProperty[];
} | {
$between: [number, number];
} | {
$in: number[];
} | {
$not: NumberProperty;
} | number;
export declare type Neo4jResultStats = {
nodesCreated: number;
nodesDeleted: number;
relationshipsCreated: number;
relationshipsDeleted: number;
propertiesSet: number;
labelsAdded: number;
labelsRemoved: number;
indexesAdded: number;
indexesRemoved: number;
constraintsAdded: number;
constraintsRemoved: number;
};