UNPKG

@selfage/generator_cli

Version:

Code generation for message, service, and database.

229 lines (228 loc) 6.2 kB
export interface EnumValue { name: string; value: number; } export interface EnumDefinition { kind: "Enum"; name: string; values: Array<EnumValue>; } export interface MessageFieldDefinition { name: string; type: string; index: number; isArray?: true; import?: string; deprecated?: true; } export interface DatastoreFilterTemplate { fieldName: string; operator: string; } export interface DatastoreOrdering { fieldName: string; descending: boolean; } export interface DatastoreQueryTemplate { name: string; filters?: Array<DatastoreFilterTemplate>; orderings?: Array<DatastoreOrdering>; } export interface DatastoreDefinition { output: string; key: string; queries?: Array<DatastoreQueryTemplate>; } export interface MessageDefinition { kind: "Message"; name: string; fields: Array<MessageFieldDefinition>; } export interface ServiceDefinition { kind: "Service"; name: string; path: string; } export interface KeyValueParamDefinition { key: string; type: string; import?: string; } export interface RemoteCallDefinition { name: string; path: string; body: string; importBody?: string; authKey?: string; metadata?: KeyValueParamDefinition; response: string; importResponse?: string; } export interface RemoteCallsGroupDefinition { kind: "RemoteCallsGroup"; name: string; service: string; importService?: string; path?: string; calls: Array<RemoteCallDefinition>; outputClient: string; outputHandler: string; } export interface SpannerTableColumnType { type: string; import?: string; isArray?: true; nullable?: true; } export interface SpannerTableColumnDefinition extends SpannerTableColumnType { name: string; } export interface SpannerTableColumnGroupDefinition { name: string; columns: Array<string>; } export interface SpannerTableSearchColumnDefinition { name: string; columnRefs: Array<string>; } export interface SpannerIndexColumnDefinition { name: string; desc: boolean; } export interface SpannerTablePrimaryKeyDefinition { name: string; desc: boolean; } export interface SpannerTableInterleaveDefinition { parentTable: string; cascadeOnDelete?: true; } export interface SpannerIndexDefinition { name: string; columns: Array<string | SpannerIndexColumnDefinition>; unique?: true; nullFiltered?: true; } export interface SpannerSearchIndexOrderByDefinition { name: string; desc: boolean; } export interface SpannerSearchIndexDefinition { name: string; columns: Array<string>; partitionByColumns?: Array<string>; orderByColumns?: Array<string | SpannerSearchIndexOrderByDefinition>; } export interface SpannerTableDefinition { kind: "Table"; name: string; columns: Array<SpannerTableColumnDefinition>; columnGroups?: Array<SpannerTableColumnGroupDefinition>; searchColumns?: Array<SpannerTableSearchColumnDefinition>; primaryKeys: Array<string | SpannerTablePrimaryKeyDefinition>; interleave?: SpannerTableInterleaveDefinition; indexes?: Array<SpannerIndexDefinition>; searchIndexes?: Array<SpannerSearchIndexDefinition>; insert?: string; delete?: string; get?: string; update?: string; } export interface SpannerTaskTableDefinition { kind: "TaskTable"; name: string; columns: Array<SpannerTableColumnDefinition>; retryCountColumn: string; executionTimeColumn: string; createdTimeColumn: string; primaryKeys: Array<string | SpannerTablePrimaryKeyDefinition>; indexes?: Array<SpannerIndexDefinition>; executionTimeIndex: string; insert: string; delete: string; get: string; listPendingTasks: string; getMetadata: string; updateMetadata: string; } export interface SpannerJoinOnLeaf { lColumn?: string; lTable?: string; lVar?: string; op: ">" | "<" | ">=" | "<=" | "!=" | "="; rColumn: string; } export interface SpannerJoinOnConcat { op: "AND" | "OR"; exprs: Array<SpannerJoinOnConcat | SpannerJoinOnLeaf>; } export interface SpannerJoin { type: "INNER" | "CROSS" | "FULL" | "LEFT" | "RIGHT"; with: string; as?: string; on?: SpannerJoinOnConcat | SpannerJoinOnLeaf; } export interface SpannerWhereLeaf { lColumn: string; lTable?: string; func?: "SCORE"; op: ">" | "<" | ">=" | "<=" | "!=" | "=" | "IS NULL" | "IS NOT NULL" | "SEARCH" | "IN"; rVar?: string; } export interface SpannerWhereConcat { op: "AND" | "OR"; exprs: Array<SpannerWhereConcat | SpannerWhereLeaf>; } export interface SpannerOrderByExpr { column: string; table?: string; func?: "SCORE"; desc?: true; } export interface SpannerGetColumnExpr { column?: string; func?: "SCORE"; all?: true; columnGroup?: string; table?: string; } export interface SpannerSelectDefinition { name: string; from: string; as?: string; join?: Array<SpannerJoin>; where?: SpannerWhereConcat | SpannerWhereLeaf; orderBy?: Array<string | SpannerOrderByExpr>; withLimit?: boolean; withOffset?: boolean; get: Array<string | SpannerGetColumnExpr>; } export interface SpannerInsertDefinition { name: string; table: string; set: Array<string>; onConflict?: "IGNORE" | "UPDATE"; } export interface SpannerUpdateDefinition { name: string; table: string; set: Array<string>; where: SpannerWhereConcat | SpannerWhereLeaf; } export interface SpannerDeleteDefinition { name: string; table: string; where: SpannerWhereConcat | SpannerWhereLeaf; } export interface SpannerDatabaseDefinition { kind: "SpannerDatabase"; name: string; tables?: Array<SpannerTableDefinition | SpannerTaskTableDefinition>; selects?: Array<SpannerSelectDefinition>; inserts?: Array<SpannerInsertDefinition>; updates?: Array<SpannerUpdateDefinition>; deletes?: Array<SpannerDeleteDefinition>; outputDdl: string; outputSql: string; } export type Definition = EnumDefinition | MessageDefinition | ServiceDefinition | RemoteCallsGroupDefinition | SpannerDatabaseDefinition;