public void Update(Entrada entrada, Action <DBException> onCompleted) { SGDB.Locks.Request(entrada.Id.Value, false, (toRelease) => { if (SGDB.MinhaVisão(this).FromID(entrada.Id.Value) == null) { onCompleted(new DBException($"Não é possível alterar o registro de ID {entrada.Id.Value} pois o mesmo não existe.")); toRelease.Release(); } else { Ações.Add(new Ação(Classes.Ações.Modificar, entrada)); OnAçãoChanged?.Invoke(this, null); onCompleted.Invoke(null); Logger.Log($"Transação {Id}: Update {entrada}"); } }, this); }
public void Insert(Entrada entrada, Action <DBException> onCompleted) { SGDB.Locks.Request(entrada.Id.Value, false, (toRelease) => { foreach (Entrada ent in SGDB.MinhaVisão(this)) { if (ent.Id == entrada.Id) { onCompleted.Invoke(new DBException("Não é possível inserir esse registro. Um com o mesmo ID já existe.")); toRelease.Release(); return; } } Ações.Add(new Ação(Classes.Ações.Inserir, entrada)); OnAçãoChanged?.Invoke(this, null); onCompleted.Invoke(null); Logger.Log($"Transação {Id}: Insert {entrada}"); }, this); }
public void Select(int id, Action <Entrada, Lock, DBException> onFound) { SGDB.Locks.Request(id, true, (toRelease) => { var procurado = SGDB.MinhaVisão(this).FromID(id); if (procurado == null) { onFound.Invoke(null, null, new DBException($"O registro de ID {id} não foi encontrado.")); toRelease.Release(); } else { Ações.Add(new Ação(Classes.Ações.Selecionar, procurado)); OnAçãoChanged?.Invoke(this, null); onFound.Invoke(procurado, toRelease, null); Logger.Log($"Transação {Id}: Select {procurado}"); } }, this); }