naja, die replace query ist aus meiner faulheit heraus entstanden. beide querys sollen eigendlich zusammen folgendes tun:
- Fall: existiert keine zeile die die where klausel erfüllt, so wird eine hinzugefügt -> fertig oder 2. Fall: existiert so eine zeile bereits, so updaten wir die daten
hintergrund:
clientseitig existiert eine tabellenförmite darstellung die excel ähnelt. es kann eine zeile hinzugefügt werden und es kann eine zeile geändert werden. im anschluss klickt der anwender auf speichern, was zur folge hat, dass die daten an diese sql-methoden geschickt werden.
so funktioniert das übrigens auch nicht:
this.generateOneUpdate = function(email, data) {
var db = new sqlite3.Database(dbRef);
var statment = SQL_INSERT_MITARBEITER.replace(/\?name/g, "'" + data.name + "'");
db.run(statment);
function callback(user_id, m_id, data, dbLokal) {
console.log("test");
var statmentLokal = SQL_INSERT_USER_MITARBEITER.replace(/\?user_id/g, user_id);
statmentLokal = statmentLokal.replace(/\?m_id/g, m_id);
dbLokal.serialize(function() {
dbLokal.run(statmentLokal);
});
statmentLokal = SQL_INSERT_SKILL.replace(/\?m_id/g, m_id);
statmentLokal = statmentLokal.replace(/\?skill/g, "'" + data.skill + "'");
statmentLokal = statmentLokal.replace(/\?subskill/g, "'" + data.subskill + "'");
statmentLokal = statmentLokal.replace(/\?nivau/g, "'" + data.nivau + "'");
dbLokal.serialize(function() {
dbLokal.run(statmentLokal);
});
statmentLokal = SQL_REPLACE_SKILL.replace(/\?m_id/g, m_id);
statmentLokal = statmentLokal.replace(/\?skill/g, "'" + data.skill + "'");
statmentLokal = statmentLokal.replace(/\?subskill/g, "'" + data.subskill + "'");
statmentLokal = statmentLokal.replace(/\?nivau/g, "'" + data.nivau + "'");
dbLokal.serialize(function() {
dbLokal.run(statmentLokal);
});
console.log("end");
}
statment = SQL_SELECT_USER_MITARBEITER_ID.replace(/\?email/g, "'" + email + "'");
statment = statment.replace(/\?name/g, "'" + data.name + "'");
/*db.all(statment, function(err, rows) {
var dbLokal = new sqlite3.Database(dbRef);
dbLokal.serialize(function() {
var last_index = rows.length - 1;
var user_id = rows[last_index].user_id;
var m_id = rows[last_index].mitarbeiter_id;
callback(user_id, m_id, data, dbLokal);
});
dbLokal.close();
});*/
var test = new Promise(function(resolve, reject) {db.all(statment, function(err, rows) {
resolve(rows);
})});
var pro = function () {
test.then(function (rows) {
console.log(rows);
//var dbLokal = new sqlite3.Database(dbRef);
var last_index = rows.length - 1;
var user_id = rows[last_index].user_id;
var m_id = rows[last_index].mitarbeiter_id;
// db.serialize(function() {
callback(user_id, m_id, data, db);
//});
console.log("lokales fertig");
//dbLokal.close();
})
.catch(function (error) {
console.log(error.message);
});
}
db.serialize(function() {
pro();
});
db.close();
console.log("fertig");
}
das db.serialize(function() { pro(); });
gehört wohl wo anders hin....