backend-plus 2.0.0-rc.16 → 2.0.0-rc.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -184,7 +184,7 @@ export type FieldDefinition = EditableDbDefinition & {
184
184
  serverSide?:boolean /* default:!clientSide if the value is retrived from the database */
185
185
  inTable?:boolean /* default:!clientSide && !sql.fields[...].expr. Is a real fisical field in the table */
186
186
  /* sizeByte?:number deprecated size in bytes for numbers */
187
- allowEmtpyText?:boolean /* if a text field accepts '' as a valid value */
187
+ allowEmptyText?:boolean /* if a text field accepts '' as a valid value */
188
188
  mobileInputType?:string
189
189
  extraRow?:number
190
190
  inexactNumber?:number /* default:depends on typeName if = means abs(x-v)<espilon
@@ -2978,22 +2978,32 @@ AppBackend.prototype.dumpDbSchemaPartial = async function dumpDbSchemaPartial(pa
2978
2978
  lines[0][0]=lines[0][0].replace('\ufeff','')
2979
2979
  }
2980
2980
  rows=lines.slice(1);
2981
+ var filteredFieldDef = lines[0].filter(filterField);
2981
2982
  if(tablesWithStrictSequence[tableName]){
2982
2983
  var dataString="COPY "+db.quoteIdent(tableName)+" ("+
2983
- lines[0].filter(filterField).map(db.quoteIdent).join(', ')+
2984
+ filteredFieldDef.map(db.quoteIdent).join(', ')+
2984
2985
  ') FROM stdin;\n'+
2985
2986
  rows.map(function(line){
2986
- return line.filter(function(_,i){ return filterField(lines[0][i]);}).map(function(value){
2987
- return value===''?'\\N':value.replace(/\\/g,'\\\\').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\r/g,'\\r');
2987
+ return line.filter(function(_,i){ return filterField(lines[0][i]);}).map(function(value,i){
2988
+ var def = tableDef.field[filteredFieldDef[i]];
2989
+ return value==='' ? (
2990
+ def.allowEmptyText && ('nullable' in def) && !def.nullable ? '' : '\\N'
2991
+ ): value.replace(/\\/g,'\\\\').replace(/\t/g,'\\t').replace(/\n/g,'\\n').replace(/\r/g,'\\r');
2988
2992
  }).join('\t')+'\n';
2989
2993
  }).join('')+'\\.\n';
2990
2994
  }else{
2991
2995
  var dataString="insert into "+db.quoteIdent(tableName)+" ("+
2992
- lines[0].filter(filterField).map(db.quoteIdent).join(', ')+
2996
+ filteredFieldDef.map(db.quoteIdent).join(', ')+
2993
2997
  ') values\n'+
2994
2998
  rows.map(function(line){
2995
- return "("+line.filter(function(_,i){ return filterField(lines[0][i]);}).map(function(value){
2996
- return value===''?'null':db.quoteNullable(value);
2999
+ return "("+line.filter(function(_,i){ return filterField(lines[0][i]);}).map(function(value,i){
3000
+ var def = tableDef.field[filteredFieldDef[i]];
3001
+ if(def == null) {
3002
+ throw Error("no se encuentra la columna "+filteredFieldDef[i]+" en "+tableName);
3003
+ }
3004
+ return value==='' ? (
3005
+ def.allowEmptyText && ('nullable' in def) && !def.nullable ? "''" : 'null'
3006
+ ) : db.quoteNullable(value);
2997
3007
  }).join(', ')+")";
2998
3008
  }).join(',\n')+';\n';
2999
3009
  }
@@ -823,6 +823,9 @@ ProcedureTables = [
823
823
  if(value != null && parameters.skipUnknownFieldsAtImport){
824
824
  value = value.replace(/(\s|\u00A0)+/g,' ').trim()
825
825
  }
826
+ if (value == null && field.allowEmptyText && ('nullable' in field) && !field.nullable ) {
827
+ value = ''
828
+ }
826
829
  newRow[field.name]=value;
827
830
  }
828
831
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "backend-plus",
3
3
  "description": "Backend for the anti Pareto rule",
4
- "version": "2.0.0-rc.16",
4
+ "version": "2.0.0-rc.17",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "repository": "codenautas/backend-plus",
@@ -82,7 +82,7 @@
82
82
  "@types/js-yaml": "^4.0.9",
83
83
  "@types/mocha": "^10.0.6",
84
84
  "@types/multiparty": "~0.0.36",
85
- "@types/node": "^20.13.0",
85
+ "@types/node": "^20.14.0",
86
86
  "@types/nodemailer": "^6.4.15",
87
87
  "@types/numeral": "~2.0.5",
88
88
  "@types/session-file-store": "^1.2.5",