@@ -2,61 +2,63 @@ import { DatabaseBuilderError, QueryCompiled } from "../core";
22import { Utils , ValueType } from "../core/utils" ;
33import { MapperColumn } from "../mapper-column" ;
44import { MapperTable } from "../mapper-table" ;
5+ import { ConfigCommander } from "./config-commander" ;
56
67export class CommanderBuilder {
78
8- public static delete ( tableName : string )
9+ constructor ( private _config : ConfigCommander ) {
10+ }
11+
12+ public delete ( tableName : string )
913 : QueryCompiled {
1014 return {
1115 params : [ ] ,
1216 query : `DELETE FROM ${ tableName } ` ,
1317 } ;
1418 }
1519
16- public static deleteMapper < T > ( mapper : MapperTable )
20+ public deleteMapper < T > ( mapper : MapperTable )
1721 : QueryCompiled {
1822 return this . delete ( mapper . tableName ) ;
1923 }
2024
21- public static update ( tableName : string , columnsNames : string [ ] , params : ValueType [ ] )
25+ public update ( tableName : string , columnsNames : string [ ] , params : ValueType [ ] )
2226 : QueryCompiled {
2327 return {
2428 params : [ ] . concat ( params ) ,
2529 query : `UPDATE ${ tableName } SET ${ columnsNames . join ( ", " ) } ` ,
2630 } ;
2731 }
2832
29- public static updateColumn < T > ( tableName : string , columns : MapperColumn [ ] , model : T )
33+ public updateColumn < T > ( tableName : string , columns : MapperColumn [ ] , model : T )
3034 : QueryCompiled {
3135 return this . update ( tableName , columns . map ( x => x . column ) , columns . map ( column => Utils . getValue < any , any > ( model , column . fieldReference ) ?. [ 0 ] ) ) ;
3236 }
3337
34- public static updateMapper < T > ( mapper : MapperTable , model : T )
38+ public updateMapper < T > ( mapper : MapperTable , model : T )
3539 : QueryCompiled {
3640 return this . updateColumn ( mapper . tableName , mapper . columns , model ) ;
3741 }
3842
39- public static insert ( tableName : string , columnsNames : string [ ] , params : ValueType [ ] )
43+ public insert ( tableName : string , columnsNames : string [ ] , params : ValueType [ ] )
4044 : QueryCompiled {
4145 return this . batchInsert ( tableName , columnsNames , [ params ] ) [ 0 ] ;
4246 }
4347
44- public static insertColumn < T > ( tableName : string , columns : MapperColumn [ ] , model : T )
48+ public insertColumn < T > ( tableName : string , columns : MapperColumn [ ] , model : T )
4549 : QueryCompiled {
4650 return this . batchInsertColumn ( tableName , columns , [ model ] ) [ 0 ] ;
4751 }
4852
49- public static insertMapper < T > ( mapper : MapperTable , model : T )
53+ public insertMapper < T > ( mapper : MapperTable , model : T )
5054 : QueryCompiled {
5155 return this . batchInsertMapper ( mapper , [ model ] ) [ 0 ] ;
5256 }
5357
54- private static LIMIT_VARIABLES_INSERT = 10000 ;
55-
56- public static batchInsert ( tableName : string , columnsNames : string [ ] , values : Array < ValueType [ ] > )
58+ public batchInsert ( tableName : string , columnsNames : string [ ] , values : Array < ValueType [ ] > )
5759 : QueryCompiled [ ] {
5860 if ( this . validValues ( values ) ) {
59- return this . splitChunks ( values , this . LIMIT_VARIABLES_INSERT ) . map ( valuesChunk => {
61+ return this . splitChunks ( values , Math . floor ( this . _config . sqliteLimitVariables / columnsNames . length ) ) . map ( valuesChunk => {
6062 return {
6163 params : [ ] . concat ( ...valuesChunk ) ,
6264 query : Utils . normalizeSqlString (
@@ -71,7 +73,7 @@ export class CommanderBuilder {
7173 }
7274 }
7375
74- private static validValues ( values : Array < ValueType [ ] > ) : boolean {
76+ private validValues ( values : Array < ValueType [ ] > ) : boolean {
7577 if ( values . length < 1 )
7678 throw new DatabaseBuilderError ( `Values not informed` ) ;
7779 const sizeInnerArray = values ?. [ 0 ] . length ;
@@ -82,7 +84,7 @@ export class CommanderBuilder {
8284 return true ;
8385 }
8486
85- public static batchInsertColumn < T > ( tableName : string , columns : MapperColumn [ ] , models : Array < T > )
87+ public batchInsertColumn < T > ( tableName : string , columns : MapperColumn [ ] , models : Array < T > )
8688 : QueryCompiled [ ] {
8789 return this . batchInsert ( tableName , columns . map ( x => x . column ) ,
8890 models . map ( model => {
@@ -91,12 +93,12 @@ export class CommanderBuilder {
9193 ) ;
9294 }
9395
94- public static batchInsertMapper < T > ( mapper : MapperTable , models : Array < T > )
96+ public batchInsertMapper < T > ( mapper : MapperTable , models : Array < T > )
9597 : QueryCompiled [ ] {
9698 return this . batchInsertColumn ( mapper . tableName , mapper . columns , models ) ;
9799 }
98100
99- private static splitChunks ( sourceArray : any [ ] , chunkSize : number ) : any [ ] [ ] {
101+ private splitChunks ( sourceArray : any [ ] , chunkSize : number ) : any [ ] [ ] {
100102 const result : any [ ] [ ] = [ ] ;
101103 for ( var i = 0 ; i < sourceArray . length ; i += chunkSize ) {
102104 result [ i / chunkSize ] = sourceArray . slice ( i , i + chunkSize ) ;
0 commit comments