All files / src Types.ts

100% Statements 1/1
100% Branches 0/0
100% Functions 0/0
100% Lines 1/1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76  9x                                                                                                                                                    
import { ModelInstance } from "./ModelInstance";
 
type Optional<T> = T extends object ? { [P in keyof T]+?: T[P] } : T;
 
export type PropertiesType = {
  [key: string]: StringProperty | NumberProperty | boolean;
};
 
export type HasManyActions<P, M extends ModelInstance<P>> = {
  get: (props?: Optional<P>, relationProps?: PropertiesType) => Promise<M[]>;
  update: (
    props?: Optional<P>,
    where?: Optional<P>,
    relationProps?: PropertiesType,
    whereRelationProps?: PropertiesType
  ) => Promise<M[]>;
  create: (props: P[], relationProps?: PropertiesType) => Promise<M[]>;
  add: (instances: M[], relationProps?: PropertiesType) => Promise<number>;
  remove: (
    props?: Optional<P>,
    relationProps?: PropertiesType
  ) => Promise<Neo4jResultStats>;
  count: (
    props?: Optional<P>,
    relationProps?: PropertiesType
  ) => Promise<number>;
};
 
export 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 type StringProperty =
  | { $sw: string }
  | { $ew: string }
  | { $contains: string }
  | { $reg: string }
  | { $eq: string }
  | { $or: StringProperty[] }
  | { $and: StringProperty[] }
  | { $in: string[] }
  | { $not: StringProperty }
  | string;
 
export 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 type Neo4jResultStats = {
  nodesCreated: number;
  nodesDeleted: number;
  relationshipsCreated: number;
  relationshipsDeleted: number;
  propertiesSet: number;
  labelsAdded: number;
  labelsRemoved: number;
  indexesAdded: number;
  indexesRemoved: number;
  constraintsAdded: number;
  constraintsRemoved: number;
};