public int Update <T>(T row) { var item = getTable <T>(); if (item != null) { List <T> rows = JsonConvert.DeserializeObject <List <T> >(item.ToString()); var meta = SQLiteTableMeta.GetMeta <T>(this); if (meta.HasPrimaryKeyName()) { int length = rows.Count; string primaryKey = meta.PrimaryKeyName; for (int i = 0; i < length; i++) { if (rows[i][primaryKey] == row[primaryKey]) { rows[i] = row; setTable(rows); return(1); } } } } return(0); }
public int InsertAll <T>(IEnumerable <T> inserts) { int count = 0; var item = getTable <T>(); if (item != null) { List <T> rows = JsonConvert.DeserializeObject <List <T> >(item.ToString()); var meta = SQLiteTableMeta.GetMeta <T>(this); bool increment = meta.HasAutoIncrement(); foreach (var row in inserts) { if (increment) { row[meta.AutoIncrementName] = meta.NextAutoIncrement(false); } rows.Add(row); count++; } meta.Save(); setTable(rows); } return(count); }
public void CreateTable <T>() where T : new() { var item = getTable <T>(); var meta = SQLiteTableMeta.GetMeta <T>(this); if (item == null) { setTable <T>(new List <T>()); } }
public int Insert <T>(T row) { int count = 0; var item = getTable <T>(); if (item != null) { List <T> rows = JsonConvert.DeserializeObject <List <T> >(item.ToString()); var meta = SQLiteTableMeta.GetMeta <T>(this); if (meta.HasAutoIncrement()) { row[meta.AutoIncrementName] = meta.NextAutoIncrement(); } rows.Add(row); count++; setTable(rows); } return(count); }
public int UpdateAll <T>(IEnumerable <T> updates) { int count = 0; var item = getTable <T>(); if (item != null) { List <T> rows = JsonConvert.DeserializeObject <List <T> >(item); var meta = SQLiteTableMeta.GetMeta <T>(this); if (meta.HasPrimaryKeyName()) { string primaryKey = meta.PrimaryKeyName; var order = updates.OrderByDescending(b => b[meta.PrimaryKeyName]).ToList(); for (int i = rows.Count - 1; i > 0 && order.Count > 0; i--) { for (int x = order.Count - 1; x > 0; x--) { var orderItem = order[x]; if (rows[i][primaryKey] == orderItem[primaryKey]) { rows[i] = orderItem; order.RemoveAt(x); count++; break; } } } if (count > 0) { setTable(rows); } } } return(count); }