mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
b8486dcdba
Summary: Changes auto-generated summary table IDs from e.g. `GristSummary_6_Table1` to `Table1_summary_A_B` (meaning `Table1` grouped by `A` and `B`). This makes it easier to write formulas involving summary tables, make API requests, understand logs, etc. Because these don't encode the source table ID as reliably as before, `decode_summary_table_name` now uses the summary table schema info, not just the summary table ID. Specifically, it looks at the type of the `group` column, which is `RefList:<source table id>`. Renaming a source table renames the summary table as before, and now renaming a groupby column renames the summary table as well. Conflicting table names are resolved in the usual way by adding a number at the end, e.g. `Table1_summary_A_B2`. These summary tables are not automatically renamed when the disambiguation is no longer needed. A new migration renames all summary tables to the new scheme, and updates formulas using summary tables with a simple regex. Test Plan: Updated many tests to use the new style of name. Added new Python tests to for resolving conflicts when renaming source tables and groupby columns. Added a test for the migration, including renames in formulas. Reviewers: georgegevoian Reviewed By: georgegevoian Differential Revision: https://phab.getgrist.com/D3508
390 lines
9.1 KiB
TypeScript
390 lines
9.1 KiB
TypeScript
/*** THIS FILE IS AUTO-GENERATED BY core/sandbox/gen_js_schema.py ***/
|
|
|
|
import { GristObjCode } from "app/plugin/GristData";
|
|
|
|
// tslint:disable:object-literal-key-quotes
|
|
|
|
export const SCHEMA_VERSION = 31;
|
|
|
|
export const schema = {
|
|
|
|
"_grist_DocInfo": {
|
|
docId : "Text",
|
|
peers : "Text",
|
|
basketId : "Text",
|
|
schemaVersion : "Int",
|
|
timezone : "Text",
|
|
documentSettings : "Text",
|
|
},
|
|
|
|
"_grist_Tables": {
|
|
tableId : "Text",
|
|
primaryViewId : "Ref:_grist_Views",
|
|
summarySourceTable : "Ref:_grist_Tables",
|
|
onDemand : "Bool",
|
|
rawViewSectionRef : "Ref:_grist_Views_section",
|
|
},
|
|
|
|
"_grist_Tables_column": {
|
|
parentId : "Ref:_grist_Tables",
|
|
parentPos : "PositionNumber",
|
|
colId : "Text",
|
|
type : "Text",
|
|
widgetOptions : "Text",
|
|
isFormula : "Bool",
|
|
formula : "Text",
|
|
label : "Text",
|
|
untieColIdFromLabel : "Bool",
|
|
summarySourceCol : "Ref:_grist_Tables_column",
|
|
displayCol : "Ref:_grist_Tables_column",
|
|
visibleCol : "Ref:_grist_Tables_column",
|
|
rules : "RefList:_grist_Tables_column",
|
|
recalcWhen : "Int",
|
|
recalcDeps : "RefList:_grist_Tables_column",
|
|
},
|
|
|
|
"_grist_Imports": {
|
|
tableRef : "Ref:_grist_Tables",
|
|
origFileName : "Text",
|
|
parseFormula : "Text",
|
|
delimiter : "Text",
|
|
doublequote : "Bool",
|
|
escapechar : "Text",
|
|
quotechar : "Text",
|
|
skipinitialspace : "Bool",
|
|
encoding : "Text",
|
|
hasHeaders : "Bool",
|
|
},
|
|
|
|
"_grist_External_database": {
|
|
host : "Text",
|
|
port : "Int",
|
|
username : "Text",
|
|
dialect : "Text",
|
|
database : "Text",
|
|
storage : "Text",
|
|
},
|
|
|
|
"_grist_External_table": {
|
|
tableRef : "Ref:_grist_Tables",
|
|
databaseRef : "Ref:_grist_External_database",
|
|
tableName : "Text",
|
|
},
|
|
|
|
"_grist_TableViews": {
|
|
tableRef : "Ref:_grist_Tables",
|
|
viewRef : "Ref:_grist_Views",
|
|
},
|
|
|
|
"_grist_TabItems": {
|
|
tableRef : "Ref:_grist_Tables",
|
|
viewRef : "Ref:_grist_Views",
|
|
},
|
|
|
|
"_grist_TabBar": {
|
|
viewRef : "Ref:_grist_Views",
|
|
tabPos : "PositionNumber",
|
|
},
|
|
|
|
"_grist_Pages": {
|
|
viewRef : "Ref:_grist_Views",
|
|
indentation : "Int",
|
|
pagePos : "PositionNumber",
|
|
},
|
|
|
|
"_grist_Views": {
|
|
name : "Text",
|
|
type : "Text",
|
|
layoutSpec : "Text",
|
|
},
|
|
|
|
"_grist_Views_section": {
|
|
tableRef : "Ref:_grist_Tables",
|
|
parentId : "Ref:_grist_Views",
|
|
parentKey : "Text",
|
|
title : "Text",
|
|
defaultWidth : "Int",
|
|
borderWidth : "Int",
|
|
theme : "Text",
|
|
options : "Text",
|
|
chartType : "Text",
|
|
layoutSpec : "Text",
|
|
filterSpec : "Text",
|
|
sortColRefs : "Text",
|
|
linkSrcSectionRef : "Ref:_grist_Views_section",
|
|
linkSrcColRef : "Ref:_grist_Tables_column",
|
|
linkTargetColRef : "Ref:_grist_Tables_column",
|
|
embedId : "Text",
|
|
},
|
|
|
|
"_grist_Views_section_field": {
|
|
parentId : "Ref:_grist_Views_section",
|
|
parentPos : "PositionNumber",
|
|
colRef : "Ref:_grist_Tables_column",
|
|
width : "Int",
|
|
widgetOptions : "Text",
|
|
displayCol : "Ref:_grist_Tables_column",
|
|
visibleCol : "Ref:_grist_Tables_column",
|
|
filter : "Text",
|
|
rules : "RefList:_grist_Tables_column",
|
|
},
|
|
|
|
"_grist_Validations": {
|
|
formula : "Text",
|
|
name : "Text",
|
|
tableRef : "Int",
|
|
},
|
|
|
|
"_grist_REPL_Hist": {
|
|
code : "Text",
|
|
outputText : "Text",
|
|
errorText : "Text",
|
|
},
|
|
|
|
"_grist_Attachments": {
|
|
fileIdent : "Text",
|
|
fileName : "Text",
|
|
fileType : "Text",
|
|
fileSize : "Int",
|
|
imageHeight : "Int",
|
|
imageWidth : "Int",
|
|
timeDeleted : "DateTime",
|
|
timeUploaded : "DateTime",
|
|
},
|
|
|
|
"_grist_Triggers": {
|
|
tableRef : "Ref:_grist_Tables",
|
|
eventTypes : "ChoiceList",
|
|
isReadyColRef : "Ref:_grist_Tables_column",
|
|
actions : "Text",
|
|
},
|
|
|
|
"_grist_ACLRules": {
|
|
resource : "Ref:_grist_ACLResources",
|
|
permissions : "Int",
|
|
principals : "Text",
|
|
aclFormula : "Text",
|
|
aclColumn : "Ref:_grist_Tables_column",
|
|
aclFormulaParsed : "Text",
|
|
permissionsText : "Text",
|
|
rulePos : "PositionNumber",
|
|
userAttributes : "Text",
|
|
},
|
|
|
|
"_grist_ACLResources": {
|
|
tableId : "Text",
|
|
colIds : "Text",
|
|
},
|
|
|
|
"_grist_ACLPrincipals": {
|
|
type : "Text",
|
|
userEmail : "Text",
|
|
userName : "Text",
|
|
groupName : "Text",
|
|
instanceId : "Text",
|
|
},
|
|
|
|
"_grist_ACLMemberships": {
|
|
parent : "Ref:_grist_ACLPrincipals",
|
|
child : "Ref:_grist_ACLPrincipals",
|
|
},
|
|
|
|
"_grist_Filters": {
|
|
viewSectionRef : "Ref:_grist_Views_section",
|
|
colRef : "Ref:_grist_Tables_column",
|
|
filter : "Text",
|
|
},
|
|
|
|
};
|
|
|
|
export interface SchemaTypes {
|
|
|
|
"_grist_DocInfo": {
|
|
docId: string;
|
|
peers: string;
|
|
basketId: string;
|
|
schemaVersion: number;
|
|
timezone: string;
|
|
documentSettings: string;
|
|
};
|
|
|
|
"_grist_Tables": {
|
|
tableId: string;
|
|
primaryViewId: number;
|
|
summarySourceTable: number;
|
|
onDemand: boolean;
|
|
rawViewSectionRef: number;
|
|
};
|
|
|
|
"_grist_Tables_column": {
|
|
parentId: number;
|
|
parentPos: number;
|
|
colId: string;
|
|
type: string;
|
|
widgetOptions: string;
|
|
isFormula: boolean;
|
|
formula: string;
|
|
label: string;
|
|
untieColIdFromLabel: boolean;
|
|
summarySourceCol: number;
|
|
displayCol: number;
|
|
visibleCol: number;
|
|
rules: [GristObjCode.List, ...number[]]|null;
|
|
recalcWhen: number;
|
|
recalcDeps: [GristObjCode.List, ...number[]]|null;
|
|
};
|
|
|
|
"_grist_Imports": {
|
|
tableRef: number;
|
|
origFileName: string;
|
|
parseFormula: string;
|
|
delimiter: string;
|
|
doublequote: boolean;
|
|
escapechar: string;
|
|
quotechar: string;
|
|
skipinitialspace: boolean;
|
|
encoding: string;
|
|
hasHeaders: boolean;
|
|
};
|
|
|
|
"_grist_External_database": {
|
|
host: string;
|
|
port: number;
|
|
username: string;
|
|
dialect: string;
|
|
database: string;
|
|
storage: string;
|
|
};
|
|
|
|
"_grist_External_table": {
|
|
tableRef: number;
|
|
databaseRef: number;
|
|
tableName: string;
|
|
};
|
|
|
|
"_grist_TableViews": {
|
|
tableRef: number;
|
|
viewRef: number;
|
|
};
|
|
|
|
"_grist_TabItems": {
|
|
tableRef: number;
|
|
viewRef: number;
|
|
};
|
|
|
|
"_grist_TabBar": {
|
|
viewRef: number;
|
|
tabPos: number;
|
|
};
|
|
|
|
"_grist_Pages": {
|
|
viewRef: number;
|
|
indentation: number;
|
|
pagePos: number;
|
|
};
|
|
|
|
"_grist_Views": {
|
|
name: string;
|
|
type: string;
|
|
layoutSpec: string;
|
|
};
|
|
|
|
"_grist_Views_section": {
|
|
tableRef: number;
|
|
parentId: number;
|
|
parentKey: string;
|
|
title: string;
|
|
defaultWidth: number;
|
|
borderWidth: number;
|
|
theme: string;
|
|
options: string;
|
|
chartType: string;
|
|
layoutSpec: string;
|
|
filterSpec: string;
|
|
sortColRefs: string;
|
|
linkSrcSectionRef: number;
|
|
linkSrcColRef: number;
|
|
linkTargetColRef: number;
|
|
embedId: string;
|
|
};
|
|
|
|
"_grist_Views_section_field": {
|
|
parentId: number;
|
|
parentPos: number;
|
|
colRef: number;
|
|
width: number;
|
|
widgetOptions: string;
|
|
displayCol: number;
|
|
visibleCol: number;
|
|
filter: string;
|
|
rules: [GristObjCode.List, ...number[]]|null;
|
|
};
|
|
|
|
"_grist_Validations": {
|
|
formula: string;
|
|
name: string;
|
|
tableRef: number;
|
|
};
|
|
|
|
"_grist_REPL_Hist": {
|
|
code: string;
|
|
outputText: string;
|
|
errorText: string;
|
|
};
|
|
|
|
"_grist_Attachments": {
|
|
fileIdent: string;
|
|
fileName: string;
|
|
fileType: string;
|
|
fileSize: number;
|
|
imageHeight: number;
|
|
imageWidth: number;
|
|
timeDeleted: number;
|
|
timeUploaded: number;
|
|
};
|
|
|
|
"_grist_Triggers": {
|
|
tableRef: number;
|
|
eventTypes: [GristObjCode.List, ...string[]]|null;
|
|
isReadyColRef: number;
|
|
actions: string;
|
|
};
|
|
|
|
"_grist_ACLRules": {
|
|
resource: number;
|
|
permissions: number;
|
|
principals: string;
|
|
aclFormula: string;
|
|
aclColumn: number;
|
|
aclFormulaParsed: string;
|
|
permissionsText: string;
|
|
rulePos: number;
|
|
userAttributes: string;
|
|
};
|
|
|
|
"_grist_ACLResources": {
|
|
tableId: string;
|
|
colIds: string;
|
|
};
|
|
|
|
"_grist_ACLPrincipals": {
|
|
type: string;
|
|
userEmail: string;
|
|
userName: string;
|
|
groupName: string;
|
|
instanceId: string;
|
|
};
|
|
|
|
"_grist_ACLMemberships": {
|
|
parent: number;
|
|
child: number;
|
|
};
|
|
|
|
"_grist_Filters": {
|
|
viewSectionRef: number;
|
|
colRef: number;
|
|
filter: string;
|
|
};
|
|
|
|
}
|