public static int CRUDUpsert(MySQLDataStoreBase store, MySqlConnection cnn, MySqlTransaction trans, Row row, FieldFilterFunc filter) { try { return crudUpsert(store, cnn, trans, row, filter); } catch(Exception error) { throw new MySQLDataAccessException( StringConsts.CRUD_STATEMENT_EXECUTION_ERROR.Args("upsert", error.ToMessageWithType(), error), error, KeyViolationKind.Unspecified, keyViolationName(error)); } }
public int Upsert(Row row, FieldFilterFunc filter = null) { throw new NotImplementedException(); }
protected abstract Task<int> DoUpsertAsync(Row row, FieldFilterFunc filter = null);
public Task<int> UpsertAsync(Row row, FieldFilterFunc filter = null) { CheckOpenStatus("Upsert"); return DoUpsertAsync(row, filter); }
public Task <int> UpdateAsync(Doc row, IDataStoreKey key = null, FieldFilterFunc filter = null) { return(TaskUtils.AsCompletedTask(() => this.Update(row, key, filter))); }
protected abstract Task <int> DoUpdateAsync(Row row, IDataStoreKey key, FieldFilterFunc filter = null);
public Task <int> UpdateAsync(Row row, IDataStoreKey key = null, FieldFilterFunc filter = null) { CheckOpenStatus("Update"); return(DoUpdateAsync(row, key, filter)); }
/// <summary> /// Converts row to BSON document suitable for storage in MONGO.DB. /// Pass target name (name of particular store/epoch/implementation) to get targeted field metadata. /// Note: the supplied row MAY NOT CONTAIN REFERENCE CYCLES - either direct or transitive /// </summary> public virtual BSONDocument RowToBSONDocument(Row row, string targetName, bool useAmorphousData = true, FieldFilterFunc filter = null) { var el = RowToBSONDocumentElement(row, targetName, useAmorphousData, filter: filter); return(el.Value); }
public int Update(Row row, IDataStoreKey key = null, FieldFilterFunc filter = null) { using (var cnn = GetConnection()) return DoUpdate(cnn, null, row, key, filter); }
private BSONDocument convertRowToBSONDocumentWith_ID(Row row, string operation, FieldFilterFunc filter = null) { var result = m_Converter.RowToBSONDocument(row, this.TargetName, filter: filter); if (result[Connector.Protocol._ID]==null) throw new MongoDBDataAccessException(StringConsts.OP_ROW_NO_PK_ID_ERROR.Args(row.Schema.Name, Connector.Protocol._ID, operation)); return result; }
protected virtual int DoUpsert(Connector.Database db, Row row, FieldFilterFunc filter = null) { var doc = convertRowToBSONDocumentWith_ID(row, "upsert", filter); var tname = GetCollectionName(row.Schema); var collection = db[tname]; var result = collection.Save(doc); checkCRUDResult(result, row.Schema.Name, "upsert"); return result.TotalDocumentsAffected; }
protected virtual int DoUpdate(Connector.Database db, Row row, IDataStoreKey key, FieldFilterFunc filter = null) { var doc = convertRowToBSONDocumentWith_ID(row, "update", filter); var _id = doc[Connector.Protocol._ID]; //20160212 spol if (filter != null) { doc.Delete(Connector.Protocol._ID); if (doc.Count == 0) return 0; // nothing to update var wrapDoc = new BSONDocument(); wrapDoc.Set(new BSONDocumentElement(Connector.Protocol.SET, doc)); doc = wrapDoc; } var tname = GetCollectionName(row.Schema); var collection = db[tname]; var qry = new Connector.Query(); qry.Set( _id ); var upd = new Connector.UpdateEntry(qry, doc, false, false); var result = collection.Update( upd ); checkCRUDResult(result, row.Schema.Name, "update"); return result.TotalDocumentsAffected; }
public virtual int Upsert(Row row, FieldFilterFunc filter = null) { var db = GetDatabase(); return DoUpsert(db, row, filter); }
public virtual int Update(Row row, IDataStoreKey key = null, FieldFilterFunc filter = null) { var db = GetDatabase(); return DoUpdate(db, row, key, filter); }
public Task<int> UpsertAsync(Row row, FieldFilterFunc filter = null) { throw new NotImplementedException(); }
protected override int DoUpsert(Row row, FieldFilterFunc filter = null) { return(Store.DoUpsert(m_Connection, m_Transaction, row, filter)); }
protected override int DoUpdate(Row row, IDataStoreKey key, FieldFilterFunc filter = null) { return(Store.DoUpdate(m_Connection, m_Transaction, row, key, filter)); }
public Task<int> UpdateAsync(Row row, IDataStoreKey key = null, FieldFilterFunc filter = null) { return TaskUtils.AsCompletedTask( () => this.Update(row, key, filter) ); }
public int Upsert(Row row, FieldFilterFunc filter = null) { CheckOpenStatus("Upsert"); return(DoUpsert(row, filter)); }
public int Upsert(Row row, FieldFilterFunc filter = null) { using (var cnn = GetConnection()) return DoUpsert(cnn, null, row, filter); }
protected abstract Task <int> DoUpsertAsync(Row row, FieldFilterFunc filter = null);
public Task<int> UpsertAsync(Row row, FieldFilterFunc filter = null) { return TaskUtils.AsCompletedTask( () => this.Upsert(row, filter) ); }
public Task <int> UpsertAsync(Doc row, FieldFilterFunc filter = null) { return(TaskUtils.AsCompletedTask(() => this.Upsert(row, filter))); }
/// <summary> /// Performs CRUD row update. Override to do custom update /// </summary> protected internal virtual int DoUpdate(MySqlConnection cnn, MySqlTransaction transaction, Row row, IDataStoreKey key = null, FieldFilterFunc filter = null) { checkReadOnly(row.Schema, "update"); return CRUDGenerator.CRUDUpdate(this, cnn, transaction, row, key, filter); }
public Task<int> UpdateAsync(Row row, IDataStoreKey key = null, FieldFilterFunc filter = null) { CheckOpenStatus("Update"); return DoUpdateAsync(row, key, filter); }
/// <summary> /// Performs CRUD row upsert. Override to do custom upsertion /// </summary> protected internal virtual int DoUpsert(MySqlConnection cnn, MySqlTransaction transaction, Row row, FieldFilterFunc filter = null) { checkReadOnly(row.Schema, "upsert"); return CRUDGenerator.CRUDUpsert(this, cnn, transaction, row, filter); }
protected abstract Task<int> DoUpdateAsync(Row row, IDataStoreKey key, FieldFilterFunc filter = null);
protected override int DoUpdate(Row row, IDataStoreKey key, FieldFilterFunc filter = null) { return Store.DoUpdate(m_Connection, m_Transaction, row, key, filter); }
private static int crudUpsert(MySQLDataStoreBase store, MySqlConnection cnn, MySqlTransaction trans, Row row, FieldFilterFunc filter) { var target = store.TargetName; var cnames = new StringBuilder(); var values = new StringBuilder(); var upserts = new StringBuilder(); var vparams = new List<MySqlParameter>(); var vpidx = 0; foreach (var fld in row.Schema.FieldDefs) { var fattr = fld[target]; if (fattr==null) continue; if (fattr.StoreFlag != StoreFlag.LoadAndStore && fattr.StoreFlag != StoreFlag.OnlyStore) continue; if (filter!=null)//20160210 Dkh+SPol { if (!filter(row, null, fld)) continue; } var fname = fld.GetBackendNameForTarget(target); var fvalue = getFieldValue(row, fld.Order, store); cnames.AppendFormat(" `{0}`,", fname); if ( fvalue != null) { var pname = string.Format("?VAL{0}", vpidx); values.AppendFormat(" {0},", pname); if (!fattr.Key) upserts.AppendFormat(" `{0}` = {1},", fname, pname); var par = new MySqlParameter(); par.ParameterName = pname; par.Value = fvalue; vparams.Add(par); vpidx++; } else { values.Append(" NULL,"); upserts.AppendFormat(" `{0}` = NULL,", fname); } }//foreach if (cnames.Length > 0) { cnames.Remove(cnames.Length - 1, 1);// remove "," upserts.Remove(upserts.Length - 1, 1);// remove "," values.Remove(values.Length - 1, 1);// remove "," } else return 0;//nothing to do string tableName = getTableName(row.Schema, target); using(var cmd = cnn.CreateCommand()) { var sql = @"INSERT INTO `{0}` ({1}) VALUES ({2}) ON DUPLICATE KEY UPDATE {3}".Args( tableName, cnames, values, upserts); cmd.Transaction = trans; cmd.CommandText = sql; cmd.Parameters.AddRange(vparams.ToArray()); ConvertParameters(store, cmd.Parameters); try { var affected = cmd.ExecuteNonQuery(); GeneratorUtils.LogCommand(store.LogLevel, "upsert-ok", cmd, null); return affected; } catch(Exception error) { GeneratorUtils.LogCommand(store.LogLevel, "upsert-error", cmd, error); throw; } }//using command }
protected override Task<int> DoUpdateAsync(Row row, IDataStoreKey key, FieldFilterFunc filter = null) { return TaskUtils.AsCompletedTask( () => this.DoUpdate(row, key, filter) ); }
protected abstract Task <int> DoUpsertAsync(Doc doc, FieldFilterFunc filter = null);
protected override int DoUpsert(Row row, FieldFilterFunc filter = null) { return Store.DoUpsert(m_Connection, m_Transaction, row, filter); }
protected override Task <int> DoUpsertAsync(Row row, FieldFilterFunc filter = null) { return(TaskUtils.AsCompletedTask(() => this.DoUpsert(row, filter))); }
protected override Task<int> DoUpsertAsync(Row row, FieldFilterFunc filter = null) { return TaskUtils.AsCompletedTask( () => this.DoUpsert(row, filter) ); }
protected override Task <int> DoUpdateAsync(Row row, IDataStoreKey key, FieldFilterFunc filter = null) { return(TaskUtils.AsCompletedTask(() => this.DoUpdate(row, key, filter))); }
public virtual int Update(Doc row, IDataStoreKey key = null, FieldFilterFunc filter = null) { var db = GetDatabase(); return(DoUpdate(db, row, key, filter)); }
/// <summary> /// Converts row to BSON document suitable for storage in MONGO.DB. /// Pass target name (name of particular store/epoch/implementation) to get targeted field metadata. /// Note: the supplied row MAY NOT CONTAIN REFERENCE CYCLES - either direct or transitive /// </summary> public virtual BSONDocumentElement RowToBSONDocumentElement(Row row, string targetName, bool useAmorphousData = true, string name = null, FieldFilterFunc filter = null) { if (row == null) { return(null); } var amrow = row as IAmorphousData; if (amrow != null && useAmorphousData && amrow.AmorphousDataEnabled) { amrow.BeforeSave(targetName); } var result = new BSONDocument(); foreach (var field in row.Schema) { var attr = field[targetName]; if (attr != null && attr.StoreFlag != StoreFlag.OnlyStore && attr.StoreFlag != StoreFlag.LoadAndStore) { continue; } if (filter != null)//20160210 Dkh+SPol { if (!filter(row, null, field)) { continue; } } var el = GetFieldAsBSON(row, field, targetName); result.Set(el); } if (amrow != null && useAmorphousData && amrow.AmorphousDataEnabled) { foreach (var kvp in amrow.AmorphousData) { result.Set(GetAmorphousFieldAsBSON(kvp, targetName)); } } return(name != null ? new BSONDocumentElement(name, result) : new BSONDocumentElement(result)); }
protected virtual int DoUpdate(Connector.Database db, Doc row, IDataStoreKey key, FieldFilterFunc filter = null) { var doc = convertDocToBSONDocumentWith_ID(row, "update", filter); var _id = doc[Connector.Protocol._ID]; doc.Delete(Connector.Protocol._ID); if (doc.Count == 0) { return(0); // nothing to update } //20160212 spol if (filter != null) { var wrapDoc = new BSONDocument(); wrapDoc.Set(new BSONDocumentElement(Connector.Protocol.SET, doc)); doc = wrapDoc; } var tname = GetCollectionName(row.Schema); var collection = db[tname]; var qry = new Connector.Query(); qry.Set(_id); var upd = new Connector.UpdateEntry(qry, doc, false, false); var result = collection.Update(upd); CheckCRUDResult(result, row.Schema.Name, "update"); return(result.TotalDocumentsAffected); }
public Task <int> UpsertAsync(Row row, FieldFilterFunc filter = null) { CheckOpenStatus("Upsert"); return(DoUpsertAsync(row, filter)); }
private BSONDocument convertDocToBSONDocumentWith_ID(Doc doc, string operation, FieldFilterFunc filter = null) { var result = m_Converter.DataDocToBSONDocument(doc, this.TargetName, filter: filter); if (result[Connector.Protocol._ID] == null) { throw new MongoDbDataAccessException(StringConsts.OP_ROW_NO_PK_ID_ERROR.Args(doc.Schema.Name, Connector.Protocol._ID, operation)); } return(result); }
protected abstract int DoUpsert(Row row, FieldFilterFunc filter = null);
private static int crudUpdate(MySQLDataStoreBase store, MySqlConnection cnn, MySqlTransaction trans, Row row, IDataStoreKey key, FieldFilterFunc filter) { var target = store.TargetName; var values = new StringBuilder(); var vparams = new List <MySqlParameter>(); var vpidx = 0; foreach (var fld in row.Schema.FieldDefs) { var fattr = fld[target]; if (fattr == null) { continue; } var fname = fld.GetBackendNameForTarget(target); //20141008 DKh Skip update of key fields //20160124 DKh add update of keys if IDataStoreKey is present if (fattr.Key && !GeneratorUtils.HasFieldInNamedKey(fname, key)) { continue; } if (fattr.StoreFlag != StoreFlag.LoadAndStore && fattr.StoreFlag != StoreFlag.OnlyStore) { continue; } if (filter != null)//20160210 Dkh+SPol { if (!filter(row, key, fld)) { continue; } } var fvalue = getFieldValue(row, fld.Order, store); if (fvalue != null) { var pname = string.Format("?VAL{0}", vpidx); values.AppendFormat(" `{0}` = {1},", fname, pname); var par = new MySqlParameter(); par.ParameterName = pname; par.Value = fvalue; vparams.Add(par); vpidx++; } else { values.AppendFormat(" `{0}` = NULL,", fname); } }//foreach if (values.Length > 0) { values.Remove(values.Length - 1, 1);// remove "," } else { return(0);//nothing to do } string tableName = getTableName(row.Schema, target); using (var cmd = cnn.CreateCommand()) { var sql = string.Empty; var pk = key ?? row.GetDataStoreKey(target); if (pk == null) { throw new MySQLDataAccessException(StringConsts.KEY_UNAVAILABLE_ERROR); } var where = GeneratorUtils.KeyToWhere(pk, cmd.Parameters); if (!string.IsNullOrEmpty(where)) { sql = "UPDATE `{0}` T1 SET {1} WHERE {2}".Args(tableName, values, where); } else { throw new MySQLDataAccessException(StringConsts.BROAD_UPDATE_ERROR);//20141008 DKh BROAD update } cmd.Transaction = trans; cmd.CommandText = sql; cmd.Parameters.AddRange(vparams.ToArray()); ConvertParameters(store, cmd.Parameters); try { var affected = cmd.ExecuteNonQuery(); GeneratorUtils.LogCommand(store.LogLevel, "update-ok", cmd, null); return(affected); } catch (Exception error) { GeneratorUtils.LogCommand(store.LogLevel, "update-error", cmd, error); throw; } }//using command }
protected abstract int DoUpdate(Row row, IDataStoreKey key, FieldFilterFunc filter = null);
private static int crudUpsert(MySQLDataStoreBase store, MySqlConnection cnn, MySqlTransaction trans, Row row, FieldFilterFunc filter) { var target = store.TargetName; var cnames = new StringBuilder(); var values = new StringBuilder(); var upserts = new StringBuilder(); var vparams = new List <MySqlParameter>(); var vpidx = 0; foreach (var fld in row.Schema.FieldDefs) { var fattr = fld[target]; if (fattr == null) { continue; } if (fattr.StoreFlag != StoreFlag.LoadAndStore && fattr.StoreFlag != StoreFlag.OnlyStore) { continue; } if (filter != null)//20160210 Dkh+SPol { if (!filter(row, null, fld)) { continue; } } var fname = fld.GetBackendNameForTarget(target); var fvalue = getFieldValue(row, fld.Order, store); cnames.AppendFormat(" `{0}`,", fname); if (fvalue != null) { var pname = string.Format("?VAL{0}", vpidx); values.AppendFormat(" {0},", pname); if (!fattr.Key) { upserts.AppendFormat(" `{0}` = {1},", fname, pname); } var par = new MySqlParameter(); par.ParameterName = pname; par.Value = fvalue; vparams.Add(par); vpidx++; } else { values.Append(" NULL,"); upserts.AppendFormat(" `{0}` = NULL,", fname); } }//foreach if (cnames.Length > 0 && upserts.Length > 0) { cnames.Remove(cnames.Length - 1, 1); // remove "," upserts.Remove(upserts.Length - 1, 1); // remove "," values.Remove(values.Length - 1, 1); // remove "," } else { return(0);//nothing to do } string tableName = getTableName(row.Schema, target); using (var cmd = cnn.CreateCommand()) { var sql = @"INSERT INTO `{0}` ({1}) VALUES ({2}) ON DUPLICATE KEY UPDATE {3}".Args(tableName, cnames, values, upserts); cmd.Transaction = trans; cmd.CommandText = sql; cmd.Parameters.AddRange(vparams.ToArray()); ConvertParameters(store, cmd.Parameters); try { var affected = cmd.ExecuteNonQuery(); GeneratorUtils.LogCommand(store.LogLevel, "upsert-ok", cmd, null); return(affected); } catch (Exception error) { GeneratorUtils.LogCommand(store.LogLevel, "upsert-error", cmd, error); throw; } }//using command }
public int Upsert(Doc row, FieldFilterFunc filter = null) { using (var cnn = GetConnection()) return(DoUpsert(cnn, null, row, filter)); }
public static int CRUDUpsert(MySQLDataStoreBase store, MySqlConnection cnn, MySqlTransaction trans, Row row, FieldFilterFunc filter) { try { return(crudUpsert(store, cnn, trans, row, filter)); } catch (Exception error) { throw new MySQLDataAccessException( StringConsts.CRUD_STATEMENT_EXECUTION_ERROR.Args("upsert", error.ToMessageWithType(), error), error, KeyViolationKind.Unspecified, KeyViolationName(error)); } }
public int Update(Doc row, IDataStoreKey key = null, FieldFilterFunc filter = null) { using (var cnn = GetConnection()) return(DoUpdate(cnn, null, row, key, filter)); }
/// <summary> /// Converts row to BSON document suitable for storage in MONGO.DB. /// Pass target name (name of particular store/epoch/implementation) to get targeted field metadata. /// Note: the supplied row MAY NOT CONTAIN REFERENCE CYCLES - either direct or transitive /// </summary> public virtual BSONDocument DataDocToBSONDocument(Doc doc, string targetName, bool useAmorphousData = true, FieldFilterFunc filter = null) { var el = DataDocToBSONDocumentElement(doc, targetName, useAmorphousData, filter: filter); return(el.Value); }
/// <summary> /// Performs CRUD row upsert. Override to do custom upsertion /// </summary> protected internal virtual int DoUpsert(MySqlConnection cnn, MySqlTransaction transaction, Doc row, FieldFilterFunc filter = null) { checkReadOnly(row.Schema, "upsert"); return(CRUDGenerator.CRUDUpsert(this, cnn, transaction, row, filter)); }
/// <summary> /// Converts row to BSON document suitable for storage in MONGO.DB. /// Pass target name (name of particular store/epoch/implementation) to get targeted field metadata. /// Note: the supplied row MAY NOT CONTAIN REFERENCE CYCLES - either direct or transitive /// </summary> public virtual BSONDocument RowToBSONDocument(Row row, string targetName, bool useAmorphousData = true, FieldFilterFunc filter = null) { var el = RowToBSONDocumentElement(row, targetName, useAmorphousData, filter: filter); return el.Value; }
public int Upsert(Row row, FieldFilterFunc filter = null) { CheckOpenStatus("Upsert"); return DoUpsert(row, filter); }
/// <summary> /// Converts row to BSON document suitable for storage in MONGO.DB. /// Pass target name (name of particular store/epoch/implementation) to get targeted field metadata. /// Note: the supplied row MAY NOT CONTAIN REFERENCE CYCLES - either direct or transitive /// </summary> public virtual BSONDocumentElement RowToBSONDocumentElement(Row row, string targetName, bool useAmorphousData = true, string name= null, FieldFilterFunc filter = null) { if (row==null) return null; var amrow = row as IAmorphousData; if (amrow!=null && useAmorphousData && amrow.AmorphousDataEnabled) { amrow.BeforeSave(targetName); } var result = new BSONDocument(); foreach(var field in row.Schema) { var attr = field[targetName]; if (attr!=null && attr.StoreFlag!=StoreFlag.OnlyStore && attr.StoreFlag!=StoreFlag.LoadAndStore) continue; if (filter!=null)//20160210 Dkh+SPol { if (!filter(row, null, field)) continue; } var el = GetFieldAsBSON(row, field, targetName); result.Set( el ); } if (amrow!=null && useAmorphousData && amrow.AmorphousDataEnabled) foreach(var kvp in amrow.AmorphousData) { result.Set( GetAmorphousFieldAsBSON(kvp, targetName) ); } return name != null ? new BSONDocumentElement(name, result) : new BSONDocumentElement(result); }
public Task <int> InsertAsync(Doc doc, FieldFilterFunc filter = null) { CheckOpenStatus("Insert"); return(DoInsertAsync(doc, filter)); }
public int Upsert(Doc doc, FieldFilterFunc filter = null) { CheckOpenStatus("Upsert"); return(DoUpsert(doc, filter)); }
private static int crudUpdate(MySQLDataStoreBase store, MySqlConnection cnn, MySqlTransaction trans, Row row, IDataStoreKey key, FieldFilterFunc filter) { var target = store.TargetName; var values = new StringBuilder(); var vparams = new List<MySqlParameter>(); var vpidx = 0; foreach (var fld in row.Schema.FieldDefs) { var fattr = fld[target]; if (fattr==null) continue; var fname = fld.GetBackendNameForTarget(target); //20141008 DKh Skip update of key fields //20160124 DKh add update of keys if IDataStoreKey is present if (fattr.Key && !GeneratorUtils.HasFieldInNamedKey(fname, key)) continue; if (fattr.StoreFlag != StoreFlag.LoadAndStore && fattr.StoreFlag != StoreFlag.OnlyStore) continue; if (filter!=null)//20160210 Dkh+SPol { if (!filter(row, key, fld)) continue; } var fvalue = getFieldValue(row, fld.Order, store); if ( fvalue != null) { var pname = string.Format("?VAL{0}", vpidx); values.AppendFormat(" `{0}` = {1},", fname, pname); var par = new MySqlParameter(); par.ParameterName = pname; par.Value = fvalue; vparams.Add(par); vpidx++; } else { values.AppendFormat(" `{0}` = NULL,", fname); } }//foreach if (values.Length > 0) { values.Remove(values.Length - 1, 1);// remove "," } else return 0;//nothing to do string tableName = getTableName(row.Schema, target); using(var cmd = cnn.CreateCommand()) { var sql = string.Empty; var pk = key ?? row.GetDataStoreKey(target); if (pk == null) throw new MySQLDataAccessException(StringConsts.KEY_UNAVAILABLE_ERROR); var where = GeneratorUtils.KeyToWhere(pk, cmd.Parameters); if (!string.IsNullOrEmpty(where)) sql = "UPDATE `{0}` T1 SET {1} WHERE {2}".Args( tableName, values, where); else throw new MySQLDataAccessException(StringConsts.BROAD_UPDATE_ERROR);//20141008 DKh BROAD update cmd.Transaction = trans; cmd.CommandText = sql; cmd.Parameters.AddRange(vparams.ToArray()); ConvertParameters(store, cmd.Parameters); try { var affected = cmd.ExecuteNonQuery(); GeneratorUtils.LogCommand(store.LogLevel, "update-ok", cmd, null); return affected; } catch(Exception error) { GeneratorUtils.LogCommand(store.LogLevel, "update-error", cmd, error); throw; } }//using command }
public int Update(Doc doc, IDataStoreKey key = null, FieldFilterFunc filter = null) { CheckOpenStatus("Update"); return(DoUpdate(doc, key, filter)); }
protected abstract int DoUpsert(Doc doc, FieldFilterFunc filter = null);
public Task<int> UpdateAsync(Row row, IDataStoreKey key = null, FieldFilterFunc filter = null) { throw new NotImplementedException(); }