public List <Record> GetModifiedRecords(string identityId, string datasetName) { lock (sqlite_lock) { List <Record> records = new List <Record>(); SQLiteStatement stmt = null; try { stmt = db.Prepare( RecordColumns.BuildQuery( RecordColumns.IDENTITY_ID + " = @whereIdentityId AND " + RecordColumns.DATASET_NAME + " = @whereDatasetName AND " + RecordColumns.MODIFIED + " = @whereModified" )); stmt.BindText(1, identityId); stmt.BindText(2, datasetName); stmt.BindInt(3, 1); while (stmt.Read()) { records.Add(this.SqliteStmtToRecord(stmt)); } } finally { stmt.FinalizeStm(); } return(records); } }
public Record GetRecord(string identityId, string datasetName, string key) { lock (sqlite_lock) { Record record = null; SQLiteStatement stmt = null; try { stmt = db.Prepare(RecordColumns.BuildQuery( RecordColumns.IDENTITY_ID + " = @identityId AND " + RecordColumns.DATASET_NAME + " = @datasetName AND " + RecordColumns.KEY + " = @key" )); stmt.BindText(1, identityId); stmt.BindText(2, datasetName); stmt.BindText(3, key); if (stmt.Read()) { record = this.SqliteStmtToRecord(stmt); } } finally { stmt.FinalizeStm(); } return(record); } }
/// <summary> /// Retrieves a list of locally modified records since last successful sync /// operation. /// </summary> /// <returns>a list of locally modified records</returns> /// <param name="identityId">Identity identifier.</param> /// <param name="datasetName">Dataset name.</param> public List <Record> GetModifiedRecords(string identityId, string datasetName) { lock (sqlite_lock) { string query = RecordColumns.BuildQuery( RecordColumns.IDENTITY_ID + " = @whereIdentityId AND " + RecordColumns.DATASET_NAME + " = @whereDatasetName AND " + RecordColumns.MODIFIED + " = @whereModified " ); return(GetModifiedRecordsHelper(query, identityId, datasetName, 1));; } }
/// <summary> /// Gets a raw record from local store. If the dataset/key combo doesn't /// // exist, null will be returned. /// </summary> /// <returns>a Record object if found, null otherwise.</returns> /// <param name="identityId">Identity identifier.</param> /// <param name="datasetName">Dataset name.</param> /// <param name="key">Key for the record.</param> public Record GetRecord(string identityId, string datasetName, string key) { lock (sqlite_lock) { Record record = null; string query = RecordColumns.BuildQuery( RecordColumns.IDENTITY_ID + " = @identityId AND " + RecordColumns.DATASET_NAME + " = @datasetName AND " + RecordColumns.KEY + " = @key " ); record = GetRecordHelper(query, identityId, datasetName, key); return(record); } }
private void UpdateOrInsertRecord(string identityId, string datasetName, Record record) { lock (sqlite_lock) { SQLiteStatement stmt = null; try { stmt = db.Prepare( RecordColumns.BuildQuery( RecordColumns.IDENTITY_ID + " = @whereIdentityId AND " + RecordColumns.DATASET_NAME + " = @whereDatasetName AND " + RecordColumns.KEY + " = @whereKey " )); stmt.BindText(1, identityId); stmt.BindText(2, datasetName); stmt.BindText(3, record.Key); bool recordsFound = false; while (stmt.Read()) { recordsFound = true; } stmt.FinalizeStm(); if (recordsFound) { stmt = db.Prepare( RecordColumns.BuildUpdate( new string[] { RecordColumns.VALUE, RecordColumns.SYNC_COUNT, RecordColumns.MODIFIED, RecordColumns.LAST_MODIFIED_TIMESTAMP, RecordColumns.LAST_MODIFIED_BY, RecordColumns.DEVICE_LAST_MODIFIED_TIMESTAMP }, RecordColumns.IDENTITY_ID + " = @whereIdentityId AND " + RecordColumns.DATASET_NAME + " = @whereDatasetName AND " + RecordColumns.KEY + " = @whereKey " )); stmt.BindText(1, record.Value); stmt.BindInt(2, record.SyncCount); stmt.BindInt(3, record.IsModified ? 1 : 0); stmt.BindDateTime(4, record.LastModifiedDate); stmt.BindText(5, record.LastModifiedBy); stmt.BindDateTime(6, record.DeviceLastModifiedDate); stmt.BindText(7, identityId); stmt.BindText(8, datasetName); stmt.BindText(9, record.Key); stmt.Step(); } else { stmt = db.Prepare(RecordColumns.BuildInsert()); stmt.BindText(1, identityId); stmt.BindText(2, datasetName); stmt.BindText(3, record.Key); stmt.BindText(4, record.Value); stmt.BindInt(5, record.SyncCount); stmt.BindDateTime(6, record.LastModifiedDate); stmt.BindText(7, record.LastModifiedBy); stmt.BindDateTime(8, record.DeviceLastModifiedDate); stmt.BindInt(9, record.IsModified ? 1 : 0); stmt.Step(); } } finally { stmt.FinalizeStm(); } } }