Advertisement
the0938

Untitled

Apr 14th, 2022 (edited)
1,063
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export interface ModelScalarValue<TType extends string, TValue> {
  2.   type: TType;
  3.   value: TValue;
  4. }
  5.  
  6. export interface ModelManyRelationValue<TType extends string> {
  7.   type: TType;
  8.   nodeIds: string[];
  9.   nodeRefersBackBy?: string;
  10. }
  11.  
  12. export interface ModelOneRelationValue<TType extends string> {
  13.   type: TType;
  14.   nodeId: string[];
  15.   nodeRefersBackBy?: string;
  16. }
  17.  
  18. export type ModelBooleanValue = ModelScalarValue<"boolean", boolean>;
  19. export type ModelStringValue = ModelScalarValue<"string", string>;
  20. export type ModelNumberValue = ModelScalarValue<"number", number>;
  21. export type ModelDateValue = ModelScalarValue<"date", Date>;
  22. export type ModelJsonValue = ModelScalarValue<"json", object>;
  23. export type ModelBelongsToManyValue = ModelManyRelationValue<'belongsToMany'>;
  24. export type ModelBelongsToOneValue = ModelManyRelationValue<'belongsToOne'>;
  25. export type ModelHasManyValue = ModelManyRelationValue<'hasMany'>;
  26. export type ModelHasOneValue = ModelManyRelationValue<'hasOne'>;
  27.  
  28. export type ModelValue =
  29.   | ModelStringValue
  30.   | ModelNumberValue
  31.   | ModelBooleanValue
  32.   | ModelDateValue
  33.   | ModelBelongsToManyValue
  34.   | ModelBelongsToOneValue
  35.   | ModelHasManyValue
  36.   | ModelHasOneValue;
  37.  
  38. export interface Model {
  39.   platformKeys: string[];
  40.   domain: string;
  41.   id: string;
  42.   createdAt: Date;
  43.   createdBy: string;
  44.   updatedAt: Date;
  45.   updatedBy: string;
  46.   isDeleted: boolean;
  47.   fields: Record<string, ModelValue>;
  48. }
  49.  
  50. export interface ModelCreateOptions {
  51.   platformKeys: string[];
  52.   domain: string;
  53.   createdBy: string;
  54.   isDeleted?: boolean;
  55.   fields: Record<string, ModelValue>;
  56. }
  57.  
  58. export interface ModelUpdateOptions {
  59.   id: string;
  60.   updatedBy: string;
  61.   isDeleted?: boolean;
  62.   fields?: Record<string, ModelValue>;
  63. }
  64.  
  65. export interface ModelPlatformsFilter {
  66.   contains?: string;
  67.   notContains?: string;
  68.   equalTo?: string[];
  69.   notEqualTo?: string[];
  70.   containsAll?: string[];
  71.   notContainsAll?: string[];
  72.   containsAny?: string[];
  73.   notContainsAny?: string[];
  74. }
  75.  
  76. export interface ModelCommonFilter<TType extends string, TValue> {
  77.   type: TType;
  78.   equalTo?: TValue;
  79.   notEqualTo?: TValue;
  80.   oneOf?: Array<TValue | undefined>;
  81.   notOneOf?: Array<TValue | undefined>;
  82.   isNull?: boolean;
  83. }
  84.  
  85. export interface ModelStringFilter extends ModelCommonFilter<"string", string> {
  86.   contains?: string;
  87.   notContains?: string;
  88.   containsAny?: string[];
  89.   notContainsAny?: string[];
  90.   containsAll?: string[];
  91.   notContainsAll?: string[];
  92.   startsWith?: string;
  93.   notStartsWith?: string;
  94.   startsWithAny?: string[];
  95.   notStartsWithAny?: string[];
  96.   endsWith?: string;
  97.   notEndsWith?: string;
  98.   endsWithAny?: string[];
  99.   notEndsWithAny?: string[];
  100.   iContains?: string;
  101.   iNotContains?: string;
  102.   iContainsAny?: string[];
  103.   iNotContainsAny?: string[];
  104.   iContainsAll?: string[];
  105.   iNotContainsAll?: string[];
  106.   iStartsWith?: string;
  107.   iNotStartsWith?: string;
  108.   iStartsWithAny?: string[];
  109.   iNotStartsWithAny?: string[];
  110.   iEndsWith?: string;
  111.   iNotEndsWith?: string;
  112.   iEndsWithAny?: string[];
  113.   iNotEndsWithAny?: string[];
  114.   match?: string;
  115.   notMatch?: string;
  116.   matchAny?: string[];
  117.   notMatchAny?: string[];
  118.   matchAll?: string[];
  119.   notMatchAll?: string[];
  120. }
  121.  
  122. export type ModelBooleanFilter = ModelCommonFilter<"boolean", boolean>;
  123.  
  124. export type ModelNumberFilter = ModelCommonFilter<"number", number> & {
  125.   greaterThanOrEqualTo?: number;
  126.   greaterThan?: number;
  127.   lessThanOrEqualTo?: number;
  128.   lessThan?: number;
  129.   integerPartEqualTo?: number;
  130.   integerPartNotEqualTo?: number;
  131.   integerPartOneOf?: number[];
  132.   integerPartNotOneOf?: number[];
  133.   integerPartGreaterThanOrEqualTo?: number;
  134.   integerPartGreaterThan?: number;
  135.   integerPartLessThanOrEqualTo?: number;
  136.   integerPartLessThan?: number;
  137.   fractionalPartEqualTo?: number;
  138.   fractionalPartNotEqualTo?: number;
  139.   fractionalPartOneOf?: number[];
  140.   fractionalPartNotOneOf?: number[];
  141.   fractionalPartGreaterThanOrEqualTo?: number;
  142.   fractionalPartGreaterThan?: number;
  143.   fractionalPartLessThanOrEqualTo?: number;
  144.   fractionalPartLessThan?: number;
  145.   roundedEqualTo?: {
  146.     type: "floor" | "ceil" | "round";
  147.     precision?: number;
  148.     value: number;
  149.   };
  150.   roundedNotEqualTo?: {
  151.     type: "floor" | "ceil" | "round";
  152.     precision?: number;
  153.     value: number;
  154.   };
  155.   roundedOneOf?: {
  156.     type: "floor" | "ceil" | "round";
  157.     precision?: number;
  158.     values: number[];
  159.   };
  160.   roundedNotOneOf?: {
  161.     type: "floor" | "ceil" | "round";
  162.     precision?: number;
  163.     values: number[];
  164.   };
  165.   roundedGreaterThanOrEqualTo?: {
  166.     type: "floor" | "ceil" | "round";
  167.     precision?: number;
  168.     value: number;
  169.   };
  170.   roundedGreaterThan?: {
  171.     type: "floor" | "ceil" | "round";
  172.     precision?: number;
  173.     value: number;
  174.   };
  175.   roundedLessThanOrEqualTo?: {
  176.     type: "floor" | "ceil" | "round";
  177.     precision?: number;
  178.     value: number;
  179.   };
  180.   roundedLessThan?: {
  181.     type: "floor" | "ceil" | "round";
  182.     precision?: number;
  183.     value: number;
  184.   };
  185. };
  186.  
  187. export type ModelDateFilter = ModelCommonFilter<"date", Date> & {
  188.   greaterThanOrEqualTo?: Date;
  189.   greaterThan?: Date;
  190.   lessThanOrEqualTo?: Date;
  191.   lessThan?: Date;
  192.   dateEqualTo?: Date;
  193.   dateNotEqualTo?: Date;
  194.   dateOneOf?: Date[];
  195.   dateNotOneOf?: Date[];
  196.   dateGreaterThanOrEqualTo?: Date;
  197.   dateGreaterThan?: Date;
  198.   dateLessThanOrEqualTo?: Date;
  199.   dateLessThan?: Date;
  200.   timeEqualTo?: Date;
  201.   timeNotEqualTo?: Date;
  202.   timeOneOf?: Date[];
  203.   timeNotOneOf?: Date[];
  204.   timeGreaterThanOrEqualTo?: Date;
  205.   timeGreaterThan?: Date;
  206.   timeLessThanOrEqualTo?: Date;
  207.   timeLessThan?: Date;
  208.   yearEqualTo?: Date;
  209.   yearNotEqualTo?: Date;
  210.   yearOneOf?: Date[];
  211.   yearNotOneOf?: Date[];
  212.   yearGreaterThanOrEqualTo?: Date;
  213.   yearGreaterThan?: Date;
  214.   yearLessThanOrEqualTo?: Date;
  215.   yearLessThan?: Date;
  216.   monthEqualTo?: Date;
  217.   monthNotEqualTo?: Date;
  218.   monthOneOf?: Date[];
  219.   monthNotOneOf?: Date[];
  220.   monthGreaterThanOrEqualTo?: Date;
  221.   monthGreaterThan?: Date;
  222.   monthLessThanOrEqualTo?: Date;
  223.   monthLessThan?: Date;
  224.   dayEqualTo?: Date;
  225.   dayNotEqualTo?: Date;
  226.   dayOneOf?: Date[];
  227.   dayNotOneOf?: Date[];
  228.   dayGreaterThanOrEqualTo?: Date;
  229.   dayGreaterThan?: Date;
  230.   dayLessThanOrEqualTo?: Date;
  231.   dayLessThan?: Date;
  232.   hoursEqualTo?: Date;
  233.   hoursNotEqualTo?: Date;
  234.   hoursOneOf?: Date[];
  235.   hoursNotOneOf?: Date[];
  236.   hoursGreaterThanOrEqualTo?: Date;
  237.   hoursGreaterThan?: Date;
  238.   hoursLessThanOrEqualTo?: Date;
  239.   hoursLessThan?: Date;
  240.   minutesEqualTo?: Date;
  241.   minutesNotEqualTo?: Date;
  242.   minutesOneOf?: Date[];
  243.   minutesNotOneOf?: Date[];
  244.   minutesGreaterThanOrEqualTo?: Date;
  245.   minutesGreaterThan?: Date;
  246.   minutesLessThanOrEqualTo?: Date;
  247.   minutesLessThan?: Date;
  248.   secondsEqualTo?: Date;
  249.   secondsNotEqualTo?: Date;
  250.   secondsOneOf?: Date[];
  251.   secondsNotOneOf?: Date[];
  252.   secondsGreaterThanOrEqualTo?: Date;
  253.   secondsGreaterThan?: Date;
  254.   secondsLessThanOrEqualTo?: Date;
  255.   secondsLessThan?: Date;
  256.   millisecondsEqualTo?: Date;
  257.   millisecondsNotEqualTo?: Date;
  258.   millisecondsOneOf?: Date[];
  259.   millisecondsNotOneOf?: Date[];
  260.   millisecondsGreaterThanOrEqualTo?: Date;
  261.   millisecondsGreaterThan?: Date;
  262.   millisecondsLessThanOrEqualTo?: Date;
  263.   millisecondsLessThan?: Date;
  264. };
  265.  
  266. export type ModelJsonFilter = ModelCommonFilter<"json", object>;
  267.  
  268. export interface ModelCommonRelationValueFilter<TType extends string> {
  269.   type: TType;
  270.   contains?: string;
  271.   notContains?: string;
  272.   containsAll?: string[];
  273.   notContainsAll?: string[];
  274.   containsAny?: string[];
  275.   notContainsAny?: string[];
  276.   equalTo?: string[];
  277.   notEqualTo?: string[];
  278. }
  279.  
  280. export type ModelBelongsToRelationValueFilter = ModelCommonRelationValueFilter<
  281.   "belongsTo"
  282. > & {
  283.   treeContains?: {
  284.     refersToParentBy: string;
  285.     value: string;
  286.   };
  287.  
  288.   treeNotContains?: {
  289.     refersToParentBy: string;
  290.     value: string;
  291.   };
  292.  
  293.   treeContainsAll?: {
  294.     refersToParentBy: string;
  295.     values: string[];
  296.   };
  297.  
  298.   treeNotContainsAll?: {
  299.     refersToParentBy: string;
  300.     values: string[];
  301.   };
  302.  
  303.   treeContainsAny?: {
  304.     refersToParentBy: string;
  305.     values: string[];
  306.   };
  307.  
  308.   treeNotContainsAny?: {
  309.     refersToParentBy: string;
  310.     values: string[];
  311.   };
  312.  
  313.   treeEqualTo?: {
  314.     refersToParentBy: string;
  315.     values: string[];
  316.   };
  317.  
  318.   treeNotEqualTo?: {
  319.     refersToParentBy: string;
  320.     values: string[];
  321.   };
  322. };
  323.  
  324. export type ModelHasRelationValueFilter = ModelCommonRelationValueFilter<"has"> & {
  325.   treeContains?: {
  326.     refersToChildrenBy: string;
  327.     value: string;
  328.   };
  329.  
  330.   treeNotContains?: {
  331.     refersToChildrenBy: string;
  332.     value: string;
  333.   };
  334.  
  335.   treeContainsAll?: {
  336.     refersToChildrenBy: string;
  337.     values: string[];
  338.   };
  339.  
  340.   treeNotContainsAll?: {
  341.     refersToChildrenBy: string;
  342.     values: string[];
  343.   };
  344.  
  345.   treeContainsAny?: {
  346.     refersToChildrenBy: string;
  347.     values: string[];
  348.   };
  349.  
  350.   treeNotContainsAny?: {
  351.     refersToChildrenBy: string;
  352.     values: string[];
  353.   };
  354.  
  355.   treeEqualTo?: {
  356.     refersToChildrenBy: string;
  357.     values: string[];
  358.   };
  359.  
  360.   treeNotEqualTo?: {
  361.     refersToChildrenBy: string;
  362.     values: string[];
  363.   };
  364. };
  365.  
  366. export type ModelValueFilter =
  367.   | ModelBooleanFilter
  368.   | ModelStringFilter
  369.   | ModelNumberFilter
  370.   | ModelDateFilter
  371.   | ModelJsonFilter
  372.   | ModelBelongsToRelationValueFilter
  373.   | ModelHasRelationValueFilter;
  374.  
  375. export type ModelFilters = {
  376.   platformKeys?: ModelPlatformsFilter;
  377.   domain?: ModelStringFilter;
  378.   id?: ModelStringFilter;
  379.   createdAt?: ModelDateFilter;
  380.   createdBy?: ModelStringFilter;
  381.   updatedAt?: ModelDateFilter;
  382.   updatedBy?: ModelStringFilter;
  383.   isDeleted?: ModelBooleanFilter;
  384.   fields?: Record<string, ModelValueFilter>;
  385. };
  386.  
  387. export type ModelSorting = Record<string, 'asc' | 'desc'>;
  388.  
  389. export type ModelSlicing = {
  390.   offset?: number;
  391.   limit?: number;
  392. };
  393.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement