- Almost ready

This commit is contained in:
Ferdi Koomen 2019-12-12 23:51:05 +01:00
parent eca24b0c35
commit 5193884511
6 changed files with 835 additions and 356 deletions

View File

@ -3,7 +3,9 @@
/* eslint-disable */
/* prettier-ignore */
export type FieldSchema = {
import { Dictionary } from "../models/Dictionary";
type FieldSchema = {
readonly type?: string;
readonly isReadOnly?: boolean;
readonly isRequired?: boolean;
@ -24,8 +26,22 @@ export type FieldSchema = {
readonly minProperties?: number;
}
export type Schema<T> = FieldSchema & {
readonly item?: string | Schema<T> | FieldSchema;
} & {
readonly [K in keyof T]: Schema<T[K]> | FieldSchema;
type ArraySchema<T> = FieldSchema & {
readonly item: Schema<T>;
}
type ObjectSchema<T> = FieldSchema & {
readonly [K in keyof T]: Schema<T[K]>;
}
export type Schema<T = any> =
T extends string ? FieldSchema :
T extends number ? FieldSchema :
T extends boolean ? FieldSchema :
T extends File ? FieldSchema :
T extends Blob ? FieldSchema :
T extends Array<infer U> ? ArraySchema<U> :
// T extends Dictionary<infer U> ? ArraySchema<U> :
// Check if infer type!
T extends Object ? ObjectSchema<T> :
FieldSchema

View File

@ -27,13 +27,13 @@ export { {{{this}}} } from './services/{{{this}}}';
{{/if}}
{{#if models}}
const schemas = {
const schemas: Schema = {
{{#each models}}
'{{{this}}}': {{{this}}}.schema,
{{/each}}
};
export function getSchema<T>(schema: string): Schema<T> | FieldSchema | null {
export function getSchema<T>(schema: string): Schema<T> | null {
if (schemas.hasOwnProperty(schema)) {
return schemas[schema];
}

View File

@ -3,7 +3,9 @@
{{#if link~}}
item: {{>schema link}},
{{else}}
item: '{{{base}}}',
item: {
type: '{{{base}}}',
}
{{/if}}
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},

View File

@ -3,7 +3,9 @@
{{#if link~}}
item: {{>schema link}},
{{else}}
item: '{{{base}}}',
item: {
type: '{{{base}}}',
}
{{/if}}
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},

View File

@ -1,10 +1,5 @@
{
type: 'Enum',
enums: [
{{#each enum}}
{{{value}}},
{{/each}}
],
{{#if isReadOnly~}}
isReadOnly: {{{isReadOnly}}},
{{/if}}

File diff suppressed because it is too large Load Diff