@capacitor-community/sqlite
Advanced tools
Comparing version 2.9.7 to 2.9.8
@@ -0,1 +1,8 @@ | ||
## 2.9.8 (2021-02-01) REFACTOR | ||
### Bug Fixes | ||
- Fix Data import where the ID is a UUID issue#75 | ||
- Fix Can't create my own DB Trigger issue#76 | ||
## 2.9.7 (2021-01-30) REFACTOR | ||
@@ -2,0 +9,0 @@ |
@@ -378,2 +378,6 @@ declare module '@capacitor/core' { | ||
/*** | ||
* Array of Trigger (JsonTrigger) | ||
*/ | ||
triggers?: JsonTrigger[]; | ||
/*** | ||
* Array of Table data | ||
@@ -401,2 +405,20 @@ */ | ||
} | ||
export interface JsonTrigger { | ||
/** | ||
* The trigger name | ||
*/ | ||
name: string; | ||
/** | ||
* The trigger time event fired | ||
*/ | ||
timeevent: string; | ||
/** | ||
* The trigger condition | ||
*/ | ||
condition?: string; | ||
/** | ||
* The logic of the trigger | ||
*/ | ||
logic: string; | ||
} | ||
export interface JsonIndex { | ||
@@ -403,0 +425,0 @@ /** |
@@ -124,3 +124,2 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
console.log('>>> in SQLiteDBConnection open dbName ' + this.dbName); | ||
const res = yield this.sqlite.open({ database: this.dbName }); | ||
@@ -127,0 +126,0 @@ return res; |
@@ -127,3 +127,2 @@ var capacitorPlugin = (function (exports, core) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
console.log('>>> in SQLiteDBConnection open dbName ' + this.dbName); | ||
const res = yield this.sqlite.open({ database: this.dbName }); | ||
@@ -130,0 +129,0 @@ return res; |
@@ -218,5 +218,3 @@ import { __awaiter } from "tslib"; | ||
stmt += `${sDate} WHERE id = 1;`; | ||
console.log(`>>> setSyncDate stmt ${stmt}`); | ||
const changes = yield this.executeSQL(stmt); | ||
console.log(`>>> setSyncDate changes ${changes}`); | ||
if (changes < 0) { | ||
@@ -223,0 +221,0 @@ return { result: false, message: 'setSyncDate failed' }; |
@@ -47,2 +47,9 @@ import { JsonSQLite } from '../../definitions'; | ||
/** | ||
* GetTriggers | ||
* @param mDb | ||
* @param sqlStmt | ||
* @param tableName | ||
*/ | ||
private getTriggers; | ||
/** | ||
* GetValues | ||
@@ -49,0 +56,0 @@ * @param mDb |
@@ -152,2 +152,8 @@ import { __awaiter } from "tslib"; | ||
} | ||
// create Table's triggers if any | ||
const triggers = yield this.getTriggers(mDb, tableName); | ||
if (triggers.length > 0) { | ||
// check triggers validity | ||
yield this._uJson.checkTriggersValidity(triggers); | ||
} | ||
// create Table's Data | ||
@@ -167,2 +173,5 @@ const query = `SELECT * FROM ${tableName};`; | ||
} | ||
if (triggers.length > 0) { | ||
table.triggers = triggers; | ||
} | ||
if (values.length > 0) { | ||
@@ -266,3 +275,3 @@ table.values = values; | ||
stmt += `type = 'index' AND tbl_name = '${tableName}' `; | ||
stmt += `AND sql NOTNULL;`; | ||
stmt += `AND sql NOT NULL;`; | ||
const retIndexes = yield this._uSQLite.queryAll(mDb, stmt, []); | ||
@@ -307,2 +316,82 @@ if (retIndexes.length > 0) { | ||
/** | ||
* GetTriggers | ||
* @param mDb | ||
* @param sqlStmt | ||
* @param tableName | ||
*/ | ||
getTriggers(mDb, tableName) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { | ||
let triggers = []; | ||
try { | ||
let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE '; | ||
stmt += `type = 'trigger' AND tbl_name = '${tableName}' `; | ||
stmt += `AND sql NOT NULL;`; | ||
const retTriggers = yield this._uSQLite.queryAll(mDb, stmt, []); | ||
if (retTriggers.length > 0) { | ||
for (let j = 0; j < retTriggers.length; j++) { | ||
const keys = Object.keys(retTriggers[j]); | ||
if (keys.length === 3) { | ||
if (retTriggers[j]['tbl_name'] === tableName) { | ||
const sql = retTriggers[j]['sql']; | ||
const name = retTriggers[j]['name']; | ||
let sqlArr = sql.split(name); | ||
if (sqlArr.length != 2) { | ||
reject(new Error(`GetTriggers: sql split name does not return 2 values`)); | ||
break; | ||
} | ||
if (!sqlArr[1].includes(tableName)) { | ||
reject(new Error(`GetTriggers: sql split does not contains ${tableName}`)); | ||
break; | ||
} | ||
const timeEvent = sqlArr[1].split(tableName, 1)[0].trim(); | ||
sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName); | ||
if (sqlArr.length != 2) { | ||
reject(new Error(`GetTriggers: sql split tableName does not return 2 values`)); | ||
break; | ||
} | ||
let condition = ''; | ||
let logic = ''; | ||
if (sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN') { | ||
sqlArr = sqlArr[1].trim().split('BEGIN'); | ||
if (sqlArr.length != 2) { | ||
reject(new Error(`GetTriggers: sql split BEGIN does not return 2 values`)); | ||
break; | ||
} | ||
condition = sqlArr[0].trim(); | ||
logic = 'BEGIN' + sqlArr[1]; | ||
} | ||
else { | ||
logic = sqlArr[1].trim(); | ||
} | ||
let trigger = {}; | ||
trigger.name = name; | ||
trigger.logic = logic; | ||
if (condition.length > 0) | ||
trigger.condition = condition; | ||
trigger.timeevent = timeEvent; | ||
triggers.push(trigger); | ||
} | ||
else { | ||
reject(new Error(`GetTriggers: Table ${tableName} doesn't match`)); | ||
break; | ||
} | ||
} | ||
else { | ||
reject(new Error(`GetTriggers: Table ${tableName} creating indexes`)); | ||
break; | ||
} | ||
} | ||
} | ||
} | ||
catch (err) { | ||
reject(new Error(`GetTriggers: ${err.message}`)); | ||
} | ||
finally { | ||
resolve(triggers); | ||
} | ||
})); | ||
}); | ||
} | ||
/** | ||
* GetValues | ||
@@ -399,2 +488,3 @@ * @param mDb | ||
let indexes = []; | ||
let triggers = []; | ||
table.name = resTables[i]; | ||
@@ -414,2 +504,8 @@ if (modTables[table.name] === 'Create') { | ||
} | ||
// create Table's triggers if any | ||
triggers = yield this.getTriggers(mDb, tableName); | ||
if (triggers.length > 0) { | ||
// check triggers validity | ||
yield this._uJson.checkTriggersValidity(triggers); | ||
} | ||
} | ||
@@ -435,2 +531,5 @@ // create Table's Data | ||
} | ||
if (triggers.length > 0) { | ||
table.triggers = triggers; | ||
} | ||
if (values.length > 0) { | ||
@@ -437,0 +536,0 @@ table.values = values; |
@@ -1,2 +0,2 @@ | ||
import { JsonColumn, JsonIndex } from '../../definitions'; | ||
import { JsonColumn, JsonIndex, JsonTrigger } from '../../definitions'; | ||
export declare class UtilsJson { | ||
@@ -86,2 +86,7 @@ private _uSQLite; | ||
/** | ||
* isTriggers | ||
* @param obj | ||
*/ | ||
private isTriggers; | ||
/** | ||
* checkSchemaValidity | ||
@@ -96,2 +101,7 @@ * @param schema | ||
checkIndexesValidity(indexes: JsonIndex[]): Promise<void>; | ||
/** | ||
* checkTriggersValidity | ||
* @param triggers | ||
*/ | ||
checkTriggersValidity(triggers: JsonTrigger[]): Promise<void>; | ||
} |
@@ -146,3 +146,3 @@ import { __awaiter } from "tslib"; | ||
const tableName = jsonData.tables[i].name; | ||
let stmt = `CREATE ${Object.keys(index).includes('mode') ? index.mode + ' ' : ''}INDEX `; | ||
let stmt = `CREATE ${Object.keys(index).includes('mode') ? index.mode + ' ' : ''}INDEX IF NOT EXISTS `; | ||
stmt += `${index.name} ON ${tableName} (${index.value});`; | ||
@@ -152,2 +152,15 @@ statements.push(stmt); | ||
} | ||
if (jsonData.tables[i].triggers != null && | ||
jsonData.tables[i].triggers.length >= 1) { | ||
for (let j = 0; j < jsonData.tables[i].triggers.length; j++) { | ||
const trigger = jsonData.tables[i].triggers[j]; | ||
const tableName = jsonData.tables[i].name; | ||
let stmt = `CREATE TRIGGER IF NOT EXISTS `; | ||
stmt += `${trigger.name} ${trigger.timeevent} ON ${tableName} `; | ||
if (trigger.condition) | ||
stmt += `${trigger.condition} `; | ||
stmt += `${trigger.logic};`; | ||
statements.push(stmt); | ||
} | ||
} | ||
} | ||
@@ -310,4 +323,8 @@ resolve(statements); | ||
let ret = false; | ||
const query = `SELECT ${firstColumnName} FROM ` + | ||
`${dbName} WHERE ${firstColumnName} = ${key};`; | ||
let query = `SELECT ${firstColumnName} FROM ` + | ||
`${dbName} WHERE ${firstColumnName} = `; | ||
if (typeof key === 'number') | ||
query += `${key};`; | ||
if (typeof key === 'string') | ||
query += `'${key}';`; | ||
try { | ||
@@ -409,2 +426,3 @@ const resQuery = yield this._uSQLite.queryAll(db, query, []); | ||
'indexes', | ||
'triggers', | ||
'values', | ||
@@ -425,2 +443,4 @@ ]; | ||
return false; | ||
if (key === 'triggers' && typeof obj[key] != 'object') | ||
return false; | ||
if (key === 'values' && typeof obj[key] != 'object') | ||
@@ -447,2 +467,9 @@ return false; | ||
} | ||
if (key === 'triggers') { | ||
for (let i = 0; i < obj[key].length; i++) { | ||
const retTriggers = this.isTriggers(obj[key][i]); | ||
if (!retTriggers) | ||
return false; | ||
} | ||
} | ||
if (key === 'values') { | ||
@@ -511,2 +538,30 @@ if (nbColumn > 0) { | ||
/** | ||
* isTriggers | ||
* @param obj | ||
*/ | ||
isTriggers(obj) { | ||
const keyTriggersLevel = [ | ||
'name', | ||
'timeevent', | ||
'condition', | ||
'logic', | ||
]; | ||
if (obj == null || | ||
(Object.keys(obj).length === 0 && obj.constructor === Object)) | ||
return false; | ||
for (var key of Object.keys(obj)) { | ||
if (keyTriggersLevel.indexOf(key) === -1) | ||
return false; | ||
if (key === 'name' && typeof obj[key] != 'string') | ||
return false; | ||
if (key === 'timeevent' && typeof obj[key] != 'string') | ||
return false; | ||
if (key === 'condition' && typeof obj[key] != 'string') | ||
return false; | ||
if (key === 'logic' && typeof obj[key] != 'string') | ||
return false; | ||
} | ||
return true; | ||
} | ||
/** | ||
* checkSchemaValidity | ||
@@ -570,3 +625,34 @@ * @param schema | ||
} | ||
/** | ||
* checkTriggersValidity | ||
* @param triggers | ||
*/ | ||
checkTriggersValidity(triggers) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { | ||
for (let i = 0; i < triggers.length; i++) { | ||
let trigger = {}; | ||
let keys = Object.keys(triggers[i]); | ||
if (keys.includes('logic')) { | ||
trigger.logic = triggers[i].logic; | ||
} | ||
if (keys.includes('name')) { | ||
trigger.name = triggers[i].name; | ||
} | ||
if (keys.includes('timeevent')) { | ||
trigger.timeevent = triggers[i].timeevent; | ||
} | ||
if (keys.includes('condition')) { | ||
trigger.condition = triggers[i].condition; | ||
} | ||
let isValid = this.isTriggers(trigger); | ||
if (!isValid) { | ||
reject(new Error(`CheckTriggersValidity: triggers[${i}] not valid`)); | ||
} | ||
} | ||
resolve(); | ||
})); | ||
}); | ||
} | ||
} | ||
//# sourceMappingURL=utilsJson.js.map |
@@ -106,3 +106,2 @@ import { __awaiter } from "tslib"; | ||
retPath = this.Path.join(dir, 'app', 'assets', this.pathDB.toLowerCase()); | ||
console.log(`$$$ AssetsDatabases ${retPath}`); | ||
return retPath; | ||
@@ -109,0 +108,0 @@ } |
@@ -566,3 +566,2 @@ import { __awaiter } from "tslib"; | ||
const ret = yield mDB.setSyncDate(syncDate); | ||
console.log(`$$$ setSyncDate ${JSON.stringify(ret)}`); | ||
return Promise.resolve(ret); | ||
@@ -642,3 +641,2 @@ }); | ||
dbList.forEach((db) => __awaiter(this, void 0, void 0, function* () { | ||
console.log(`>>> ${db}`); | ||
// for each check if the suffix SQLite.db is there or add it | ||
@@ -645,0 +643,0 @@ let toDb = this._uFile.setPathSuffix(db); |
@@ -378,2 +378,6 @@ declare module '@capacitor/core' { | ||
/*** | ||
* Array of Trigger (JsonTrigger) | ||
*/ | ||
triggers?: JsonTrigger[]; | ||
/*** | ||
* Array of Table data | ||
@@ -401,2 +405,20 @@ */ | ||
} | ||
export interface JsonTrigger { | ||
/** | ||
* The trigger name | ||
*/ | ||
name: string; | ||
/** | ||
* The trigger time event fired | ||
*/ | ||
timeevent: string; | ||
/** | ||
* The trigger condition | ||
*/ | ||
condition?: string; | ||
/** | ||
* The logic of the trigger | ||
*/ | ||
logic: string; | ||
} | ||
export interface JsonIndex { | ||
@@ -403,0 +425,0 @@ /** |
@@ -116,3 +116,2 @@ import { __awaiter } from "tslib"; | ||
return __awaiter(this, void 0, void 0, function* () { | ||
console.log('>>> in SQLiteDBConnection open dbName ' + this.dbName); | ||
const res = yield this.sqlite.open({ database: this.dbName }); | ||
@@ -119,0 +118,0 @@ return res; |
@@ -239,5 +239,3 @@ import { UtilsFile } from './utilsFile'; | ||
stmt += `${sDate} WHERE id = 1;`; | ||
console.log(`>>> setSyncDate stmt ${stmt}`); | ||
const changes: number = await this.executeSQL(stmt); | ||
console.log(`>>> setSyncDate changes ${changes}`); | ||
if (changes < 0) { | ||
@@ -244,0 +242,0 @@ return { result: false, message: 'setSyncDate failed' }; |
@@ -6,2 +6,3 @@ import { | ||
JsonIndex, | ||
JsonTrigger, | ||
} from '../../definitions'; | ||
@@ -153,2 +154,11 @@ import { UtilsSQLite } from '../utilsSQLite'; | ||
} | ||
// create Table's triggers if any | ||
const triggers: JsonTrigger[] = await this.getTriggers( | ||
mDb, | ||
tableName, | ||
); | ||
if (triggers.length > 0) { | ||
// check triggers validity | ||
await this._uJson.checkTriggersValidity(triggers); | ||
} | ||
// create Table's Data | ||
@@ -167,2 +177,5 @@ const query: string = `SELECT * FROM ${tableName};`; | ||
} | ||
if (triggers.length > 0) { | ||
table.triggers = triggers; | ||
} | ||
if (values.length > 0) { | ||
@@ -265,3 +278,3 @@ table.values = values; | ||
stmt += `type = 'index' AND tbl_name = '${tableName}' `; | ||
stmt += `AND sql NOTNULL;`; | ||
stmt += `AND sql NOT NULL;`; | ||
const retIndexes = await this._uSQLite.queryAll(mDb, stmt, []); | ||
@@ -304,2 +317,101 @@ if (retIndexes.length > 0) { | ||
/** | ||
* GetTriggers | ||
* @param mDb | ||
* @param sqlStmt | ||
* @param tableName | ||
*/ | ||
private async getTriggers( | ||
mDb: any, | ||
tableName: string, | ||
): Promise<JsonTrigger[]> { | ||
return new Promise(async (resolve, reject) => { | ||
let triggers: JsonTrigger[] = []; | ||
try { | ||
let stmt: string = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE '; | ||
stmt += `type = 'trigger' AND tbl_name = '${tableName}' `; | ||
stmt += `AND sql NOT NULL;`; | ||
const retTriggers = await this._uSQLite.queryAll(mDb, stmt, []); | ||
if (retTriggers.length > 0) { | ||
for (let j: number = 0; j < retTriggers.length; j++) { | ||
const keys: Array<string> = Object.keys(retTriggers[j]); | ||
if (keys.length === 3) { | ||
if (retTriggers[j]['tbl_name'] === tableName) { | ||
const sql: string = retTriggers[j]['sql']; | ||
const name: string = retTriggers[j]['name']; | ||
let sqlArr: string[] = sql.split(name); | ||
if (sqlArr.length != 2) { | ||
reject( | ||
new Error( | ||
`GetTriggers: sql split name does not return 2 values`, | ||
), | ||
); | ||
break; | ||
} | ||
if (!sqlArr[1].includes(tableName)) { | ||
reject( | ||
new Error( | ||
`GetTriggers: sql split does not contains ${tableName}`, | ||
), | ||
); | ||
break; | ||
} | ||
const timeEvent = sqlArr[1].split(tableName, 1)[0].trim(); | ||
sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName); | ||
if (sqlArr.length != 2) { | ||
reject( | ||
new Error( | ||
`GetTriggers: sql split tableName does not return 2 values`, | ||
), | ||
); | ||
break; | ||
} | ||
let condition: string = ''; | ||
let logic: string = ''; | ||
if ( | ||
sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN' | ||
) { | ||
sqlArr = sqlArr[1].trim().split('BEGIN'); | ||
if (sqlArr.length != 2) { | ||
reject( | ||
new Error( | ||
`GetTriggers: sql split BEGIN does not return 2 values`, | ||
), | ||
); | ||
break; | ||
} | ||
condition = sqlArr[0].trim(); | ||
logic = 'BEGIN' + sqlArr[1]; | ||
} else { | ||
logic = sqlArr[1].trim(); | ||
} | ||
let trigger: JsonTrigger = {} as JsonTrigger; | ||
trigger.name = name; | ||
trigger.logic = logic; | ||
if (condition.length > 0) trigger.condition = condition; | ||
trigger.timeevent = timeEvent; | ||
triggers.push(trigger); | ||
} else { | ||
reject( | ||
new Error(`GetTriggers: Table ${tableName} doesn't match`), | ||
); | ||
break; | ||
} | ||
} else { | ||
reject( | ||
new Error(`GetTriggers: Table ${tableName} creating indexes`), | ||
); | ||
break; | ||
} | ||
} | ||
} | ||
} catch (err) { | ||
reject(new Error(`GetTriggers: ${err.message}`)); | ||
} finally { | ||
resolve(triggers); | ||
} | ||
}); | ||
} | ||
/** | ||
* GetValues | ||
@@ -403,2 +515,3 @@ * @param mDb | ||
let indexes: JsonIndex[] = []; | ||
let triggers: JsonTrigger[] = []; | ||
table.name = resTables[i]; | ||
@@ -418,2 +531,8 @@ if (modTables[table.name] === 'Create') { | ||
} | ||
// create Table's triggers if any | ||
triggers = await this.getTriggers(mDb, tableName); | ||
if (triggers.length > 0) { | ||
// check triggers validity | ||
await this._uJson.checkTriggersValidity(triggers); | ||
} | ||
} | ||
@@ -439,2 +558,5 @@ // create Table's Data | ||
} | ||
if (triggers.length > 0) { | ||
table.triggers = triggers; | ||
} | ||
if (values.length > 0) { | ||
@@ -441,0 +563,0 @@ table.values = values; |
import { UtilsSQLite } from '../utilsSQLite'; | ||
import { JsonColumn, JsonIndex } from '../../definitions'; | ||
import { JsonColumn, JsonIndex, JsonTrigger } from '../../definitions'; | ||
@@ -151,2 +151,3 @@ export class UtilsJson { | ||
statements.push(');'); | ||
// create trigger last_modified associated with the table | ||
@@ -173,3 +174,3 @@ let trig: string = 'CREATE TRIGGER IF NOT EXISTS '; | ||
Object.keys(index).includes('mode') ? index.mode + ' ' : '' | ||
}INDEX `; | ||
}INDEX IF NOT EXISTS `; | ||
stmt += `${index.name} ON ${tableName} (${index.value});`; | ||
@@ -179,2 +180,21 @@ statements.push(stmt); | ||
} | ||
if ( | ||
jsonData.tables[i].triggers != null && | ||
jsonData.tables[i].triggers!.length >= 1 | ||
) { | ||
for ( | ||
let j: number = 0; | ||
j < jsonData.tables[i].triggers!.length; | ||
j++ | ||
) { | ||
const trigger = jsonData.tables[i].triggers![j]; | ||
const tableName = jsonData.tables[i].name; | ||
let stmt: string = `CREATE TRIGGER IF NOT EXISTS `; | ||
stmt += `${trigger.name} ${trigger.timeevent} ON ${tableName} `; | ||
if (trigger.condition) stmt += `${trigger.condition} `; | ||
stmt += `${trigger.logic};`; | ||
statements.push(stmt); | ||
} | ||
} | ||
} | ||
@@ -377,5 +397,7 @@ resolve(statements); | ||
let ret: boolean = false; | ||
const query: string = | ||
let query: string = | ||
`SELECT ${firstColumnName} FROM ` + | ||
`${dbName} WHERE ${firstColumnName} = ${key};`; | ||
`${dbName} WHERE ${firstColumnName} = `; | ||
if (typeof key === 'number') query += `${key};`; | ||
if (typeof key === 'string') query += `'${key}';`; | ||
try { | ||
@@ -476,2 +498,3 @@ const resQuery: Array<any> = await this._uSQLite.queryAll( | ||
'indexes', | ||
'triggers', | ||
'values', | ||
@@ -490,2 +513,3 @@ ]; | ||
if (key === 'indexes' && typeof obj[key] != 'object') return false; | ||
if (key === 'triggers' && typeof obj[key] != 'object') return false; | ||
if (key === 'values' && typeof obj[key] != 'object') return false; | ||
@@ -498,2 +522,3 @@ if (key === 'schema') { | ||
foreignkey?: string; | ||
constraint?: string; | ||
}) => { | ||
@@ -516,2 +541,8 @@ if (element.column) { | ||
} | ||
if (key === 'triggers') { | ||
for (let i: number = 0; i < obj[key].length; i++) { | ||
const retTriggers: boolean = this.isTriggers(obj[key][i]); | ||
if (!retTriggers) return false; | ||
} | ||
} | ||
if (key === 'values') { | ||
@@ -580,2 +611,27 @@ if (nbColumn > 0) { | ||
} | ||
/** | ||
* isTriggers | ||
* @param obj | ||
*/ | ||
private isTriggers(obj: any): boolean { | ||
const keyTriggersLevel: Array<string> = [ | ||
'name', | ||
'timeevent', | ||
'condition', | ||
'logic', | ||
]; | ||
if ( | ||
obj == null || | ||
(Object.keys(obj).length === 0 && obj.constructor === Object) | ||
) | ||
return false; | ||
for (var key of Object.keys(obj)) { | ||
if (keyTriggersLevel.indexOf(key) === -1) return false; | ||
if (key === 'name' && typeof obj[key] != 'string') return false; | ||
if (key === 'timeevent' && typeof obj[key] != 'string') return false; | ||
if (key === 'condition' && typeof obj[key] != 'string') return false; | ||
if (key === 'logic' && typeof obj[key] != 'string') return false; | ||
} | ||
return true; | ||
} | ||
@@ -638,2 +694,32 @@ /** | ||
} | ||
/** | ||
* checkTriggersValidity | ||
* @param triggers | ||
*/ | ||
public async checkTriggersValidity(triggers: JsonTrigger[]): Promise<void> { | ||
return new Promise(async (resolve, reject) => { | ||
for (let i: number = 0; i < triggers.length; i++) { | ||
let trigger: JsonTrigger = {} as JsonTrigger; | ||
let keys: string[] = Object.keys(triggers[i]); | ||
if (keys.includes('logic')) { | ||
trigger.logic = triggers[i].logic; | ||
} | ||
if (keys.includes('name')) { | ||
trigger.name = triggers[i].name; | ||
} | ||
if (keys.includes('timeevent')) { | ||
trigger.timeevent = triggers[i].timeevent; | ||
} | ||
if (keys.includes('condition')) { | ||
trigger.condition = triggers[i].condition; | ||
} | ||
let isValid: boolean = this.isTriggers(trigger); | ||
if (!isValid) { | ||
reject(new Error(`CheckTriggersValidity: triggers[${i}] not valid`)); | ||
} | ||
} | ||
resolve(); | ||
}); | ||
} | ||
} |
@@ -113,3 +113,2 @@ export class UtilsFile { | ||
retPath = this.Path.join(dir, 'app', 'assets', this.pathDB.toLowerCase()); | ||
console.log(`$$$ AssetsDatabases ${retPath}`); | ||
return retPath; | ||
@@ -116,0 +115,0 @@ } |
@@ -580,3 +580,2 @@ import { WebPlugin } from '@capacitor/core'; | ||
const ret: any = await mDB.setSyncDate(syncDate); | ||
console.log(`$$$ setSyncDate ${JSON.stringify(ret)}`); | ||
return Promise.resolve(ret); | ||
@@ -657,3 +656,2 @@ } | ||
dbList.forEach(async (db: string) => { | ||
console.log(`>>> ${db}`); | ||
// for each check if the suffix SQLite.db is there or add it | ||
@@ -660,0 +658,0 @@ let toDb: string = this._uFile.setPathSuffix(db); |
{ | ||
"name": "@capacitor-community/sqlite", | ||
"version": "2.9.7", | ||
"version": "2.9.8", | ||
"description": "Capacitor SQLite Plugin", | ||
@@ -5,0 +5,0 @@ "homepage": "https://github.com/capacitor-community/sqlite", |
@@ -40,2 +40,6 @@ <p align="center"><br><img src="https://user-images.githubusercontent.com/236501/85893648-1c92e880-b7a8-11ea-926d-95355b8175c7.png" width="128" height="128" /></p> | ||
- a [Ionic/React app](https://github.com/jepiqueau/react-sqlite-app-starter) | ||
- a [Ionic/Vue app](https://github.com/jepiqueau/vue-sqlite-app-starter) | ||
<br> | ||
@@ -42,0 +46,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3008709
246
16795
302