new(basic.gblib): TABLE keyword #375.

This commit is contained in:
Rodrigo Rodriguez 2023-10-02 16:39:13 -03:00
parent 0012fd0f89
commit 1a3a6e0d01
2 changed files with 31 additions and 2 deletions

View file

@ -1003,7 +1003,7 @@ export class KeywordsExpressions {
$4 = $4.substr(2);
const fields = $4.split(',').
return `await sys.save({pid: pid, file: "${$3}", args: [${$4}]}, fields)`;
return `await sys.saveToStorage({pid: pid, file: "${$3}", args: [${$4}]}, fields)`;
}
];

View file

@ -640,13 +640,42 @@ export class SystemKeywords {
/**
* Takes note inside a notes.xlsx of .gbdata.
*
* @exaple NOTE "text"
* @example NOTE "text"
*
*/
public async note({ pid, text }): Promise<any> {
await this.save({pid, file:"Notes.xlsx", args:[text]} );
}
/**
* Saves variables to storage, not a worksheet.
*
* @example SAVE "Billing", columnName1, columnName2
*
*/
public async saveToStorage({pid, table, fields, fieldsNames}){
const fieldRegExp = /(?:.*\.)(.*)/gim;
const minBoot = GBServer.globals.minBoot as any;
const definition = minBoot.core.sequelize.models[table];
let data = {};
let index = 0;
fields.forEach(field => {
// Extracts only the last part of the variable like 'column'
// from 'row.column'.
let name = fieldsNames[index];
name = fieldRegExp.exec(name)[2];
data[name] = field;
});
return await definition.create(data);
}
/**
* Saves the content of several variables to a new row in a tabular file.
*