public async Task ImportEntity(INightFluxEntity record) { BatchEntities.Enqueue(record); if (BatchEntities.Count >= 1024) { await EmptyQueue(); } }
//public async Task RemoveDuplicateCarbs() //{ // using var conn = await GetConnection(); // var duplicateIds = new List<long>(); // await foreach (var dr in ExecuteQuery("SELECT import_id, COUNT(*) FROM carb GROUP BY import_id HAVING COUNT(*) > 1", null, conn)) // { // var importId = dr.GetString(0); // var duplicateCount = dr.GetInt64(1) - 1; // await foreach (var rowInfo in ExecuteQuery("SELECT rowid FROM carb WHERE import_id = @i ORDER BY time DESC LIMIT @k", // new [] { GetParameter("i", importId), GetParameter("k", duplicateCount) }, conn)) // { // duplicateIds.Add(rowInfo.GetInt64(0)); // } // } // using var tran = await conn.BeginTransactionAsync(); // foreach(var duplicateId in duplicateIds) // { // await ExecuteNonQuery("DELETE FROM carb WHERE rowid = @d", // new [] { GetParameter("d", duplicateId) }, conn); // } // await tran.CommitAsync(); //} private async Task InsertEntity(INightFluxEntity iv, IDbTransaction transaction) { try { if (iv is BgValue bgValue) { await Connection.ExecuteAsync("INSERT OR REPLACE INTO bg(time,value) VALUES(@A,@B)", new { A = bgValue.Time.ToUnixTimeMilliseconds(), B = bgValue.Value }, transaction); } //else if (iv is BasalProfile) //{ // await ImportProfile((BasalProfile) iv); //} //else if (iv is TempBasal) //{ // await ImportTempBasal((TempBasal) iv); //} //else if (iv is Bolus) //{ // await ImportBolus((Bolus) iv); //} //else if (iv is Carb) //{ // await ImportCarb((Carb) iv); //} //else if (iv is ExtendedBolus) //{ // await ImportExtendedBolus((ExtendedBolus) iv); //} else if (iv is InfusionDelivery infusionRate) { await Connection.ExecuteAsync("INSERT OR REPLACE INTO oc_infusion(time, site_id, rate) VALUES(@A,@B,@C)", new { A = infusionRate.Time.ToUnixTimeMilliseconds(), B = infusionRate.SiteId, C = infusionRate.Delivered }, transaction); } } catch (Exception e) { Console.WriteLine($"Error importing entity {iv}\n{e}"); } }