Пример #1
0
        private Recipe CreateRecipe(Recipe recipe)
        {
            var row = recipe.ToRecipeRow();

            using (_connection.Lock())
            {
                _connection.RunInTransaction(() =>
                {
                    _connection.Insert(row);
                    recipe.Id  = row.Id;
                    var fields = FieldExtractor.Extract(recipe);
                    _connection.InsertAll(fields);
                    var searchFields = fields
                                       .Where(x => x.IsSearchable)
                                       .Select(x => new RecipeTextSearchRow
                    {
                        Id    = x.Id,
                        Value = _queryParser.Parse(x.Value)
                    })
                                       .ToList();
                    _connection.InsertAll(searchFields);
                });
            }
            return(recipe);
        }
Пример #2
0
 public void Add(IEnumerable <BackgroundTrackItem> tracks)
 {
     using (connection.Lock())
     {
         connection.InsertAll(tracks);
     }
 }
Пример #3
0
        public void InsertAll <T>(IList <T> entityList) where T : EntityBase
        {
            var utcNow = DateTime.UtcNow;

            foreach (var entity in entityList)
            {
                PrepareForInsert <T>(entity, utcNow, utcNow);
            }

            using (Connection.Lock())
            {
                Connection.InsertAll(entityList);
            }
        }
Пример #4
0
 public Task <int> InsertAllAsync(IEnumerable items)
 {
     if (items == null)
     {
         throw new ArgumentNullException("items");
     }
     return(Task.Factory.StartNew(() =>
     {
         SQLiteConnectionWithLock conn = GetConnection();
         using (conn.Lock())
         {
             return conn.InsertAll(items);
         }
     }, CancellationToken.None, _taskCreationOptions, _taskScheduler ?? TaskScheduler.Default));
 }
Пример #5
0
 public Task <int> InsertAllAsync(IEnumerable items)
 {
     if (items == null)
     {
         throw new ArgumentNullException("items");
     }
     return(_taskFactory.StartNew(() =>
     {
         SQLiteConnectionWithLock conn = GetConnection();
         using (conn.Lock())
         {
             return conn.InsertAll(items);
         }
     }));
 }
Пример #6
0
 public int InsertAll(System.Collections.IEnumerable collection)
 {
     //using (SQLiteConnection _dbManager = new SQLiteConnection(_baseUrl.GetDatabasePath(), WriteOnlyFlags))
     using (SQLiteConnectionWithLock _dbManager = new SQLiteConnectionWithLock(new SQLiteConnectionString(_baseUrl.GetDatabasePath(), false, null), SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create | SQLiteOpenFlags.FullMutex | SQLiteOpenFlags.SharedCache))
     {
         using (_dbManager.Lock())
         {
             try
             {
                 return(_dbManager.InsertAll(collection));
             }
             catch (Exception ex)
             {
                 Debug.WriteLine($"SQLiteError: {ex.Message}");
                 return(-1);
             }
         }
     }
 }
Пример #7
0
        /// <summary>
        /// 跟proxy对接的接口,接收json object,解析数据并插入数据库
        /// </summary>
        /// <param name="data">数据</param>
        /// <param name="typename">数据类型名称,JSON里没有的话就要提供</param>
        public void ReceiveDataObject(JObject data, string typename = null)
        {
            object        obj     = null;
            List <object> objList = null;
            var           type    = data.ContainsKey("type") ? data.Value <string>("type") : typename;

            Log?.Information("Database receive {type}.", type);
            try
            {
                switch (type)
                {
                case "Gun/developGun":
                {
                    // 奇数是普通建造
                    if (data.Value <int>("build_slot") % 2 == 1)
                    {
                        obj = data.ToObject <GunDevelop>();
                    }
                    else
                    {
                        obj = data.ToObject <GunDevelopHeavy>();
                    }

                    break;
                }

                case "Gun/developMultiGun":
                {
                    var guns = data["gun_ids"];
                    objList = new List <object>();
                    foreach (var gun in guns)
                    {
                        var id   = gun.Value <int>("id");
                        var slot = gun.Value <int>("slot");
                        if (slot % 2 == 1)
                        {
                            var tmp = data.ToObject <GunDevelop>();
                            tmp.gun_id = id;
                            objList.Add(tmp);
                        }
                        else
                        {
                            var tmp = data.ToObject <GunDevelopHeavy>();
                            tmp.gun_id = id;
                            objList.Add(tmp);
                        }
                    }

                    break;
                }

                case "Mission/battleFinish":
                {
                    var tmp = data.ToObject <MissionBattle>();
                    if (data.ContainsKey("battle_get_gun"))
                    {
                        var guns = data.Value <JArray>("battle_get_gun");
                        if (guns.Count > 0)
                        {
                            tmp.gun_id = guns[0].Value <int>();
                        }

                        if (guns.Count > 1)
                        {
                            tmp.gun_id_extra = guns[1].Value <int>();
                        }
                    }

                    if (data.ContainsKey("battle_get_equip"))
                    {
                        var equips = data.Value <JArray>("battle_get_equip");
                        if (equips.Count > 0)
                        {
                            tmp.equip_id = equips[0].Value <int>();
                        }

                        if (equips.Count > 1)
                        {
                            tmp.equip_id_extra = equips[1].Value <int>();
                        }
                    }

                    _enemy2mission.TryGetValue(tmp.enemy, out var mission_id);
                    tmp.mission_id = mission_id;
                    obj            = tmp;
                    break;
                }

                case "Mission/endTurn":
                {
                    var tmp = data.ToObject <MissionFinish>();
                    if (data.ContainsKey("reward_equip"))
                    {
                        var equips = data.Value <JArray>("reward_equip");
                        if (equips.Count > 0)
                        {
                            tmp.equip_id = equips[0].Value <int>();
                        }

                        if (equips.Count > 1)
                        {
                            tmp.equip_id_extra = equips[1].Value <int>();
                        }
                    }

                    if (data.ContainsKey("reward_gun"))
                    {
                        var guns = data.Value <JArray>("reward_gun");
                        if (guns.Count > 0)
                        {
                            tmp.gun_id = guns[0].Value <int>();
                        }

                        if (guns.Count > 1)
                        {
                            tmp.gun_id_extra = guns[1].Value <int>();
                        }
                    }

                    _spot2mission.TryGetValue(tmp.spot_id, out var mission_id);
                    tmp.mission_id = mission_id;
                    obj            = tmp;
                    break;
                }

                case "Equip/produceDevelop":
                {
                    objList = new List <object>();
                    var equips = data.Value <JArray>("equips");
                    foreach (var equip in equips)
                    {
                        var tmp = data.ToObject <EquipProduce>();
                        tmp.equip_id = equip.Value <int>();
                        objList.Add(tmp);
                    }

                    break;
                }

                case "Equip/develop":
                {
                    if (data.Value <int>("build_slot") % 2 == 1)
                    {
                        obj = data.ToObject <EquipDevelop>();
                    }
                    else
                    {
                        obj = data.ToObject <EquipDevelopHeavy>();
                    }

                    break;
                }

                case "Equip/developMulti":
                {
                    objList = new List <object>();
                    var equips = data.Value <JArray>("equip_ids");
                    var basic  = data.ToObject <EquipDevelopHeavy>();   // 获取基础信息
                    foreach (var equip in equips)
                    {
                        if (equip["slot"].Value <int>() % 2 == 1)
                        {
                            var tmp = equip["info"].ToObject <EquipDevelop>();
                            tmp.timestamp = basic.timestamp;
                            tmp.mp        = basic.mp;
                            tmp.ammo      = basic.ammo;
                            tmp.mre       = basic.mre;
                            tmp.part      = basic.part;
                            objList.Add(tmp);
                        }
                        else
                        {
                            var tmp = equip["info"].ToObject <EquipDevelopHeavy>();
                            tmp.timestamp   = basic.timestamp;
                            tmp.mp          = basic.mp;
                            tmp.ammo        = basic.ammo;
                            tmp.mre         = basic.mre;
                            tmp.part        = basic.part;
                            tmp.input_level = basic.input_level;
                            objList.Add(tmp);
                        }
                    }

                    break;
                }
                }
            }
            catch (Exception e)
            {
                Log?.Warning("Error during insert data : {0}", e.ToString());
            }

            if (obj != null)
            {
                Log?.Debug("Database insert {obj}", obj.ToString());
                _db.Insert(obj);
            }

            if (objList != null)
            {
                Log?.Debug("Database insert {n} objects.", objList.Count);
                _db.InsertAll(objList);
            }
        }