public void PutInputOutput(int id, InputData item)
 {
     myCore.Logging.log("PUT InputOutputController PutInputOutput({0}, {1}) ...", 4, myCore.LogType.Information, id, item);
     item.Id = id;
     if (!repository.Update(item))
     {
         throw new HttpResponseException(HttpStatusCode.NotFound);
     }
 }
        public HttpResponseMessage PostInputOutput(InputData item)
        {
            myCore.Logging.log("POST InputOutputController PostInputOutput({0}) ... ", 4, myCore.LogType.Information, item);

            item = repository.Add(item);
            var response = Request.CreateResponse<InputData>(HttpStatusCode.Created, item);

            string uri = Url.Link("DefaultApi", new { id = item.Id });
            response.Headers.Location = new Uri(uri);
            return response;
        }
        public InputData Add(InputData item)
        {
            using (SQLiteConnection conn = new SQLiteConnection("Data Source=Db/InputOutput.db"))
            using (SQLiteCommand cmd = conn.CreateCommand())
            {
                conn.Open();
                cmd.CommandText =
                    @"INSERT INTO Data (
                        UserName,
                        ModificationDate,
                        Bucket,
                        BucketCategory,
                        Context,
                        Value
                    ) VALUES (
                        @ParamUserName,
                        @ParamModificationDate,
                        @ParamBucket,
                        @ParamBucketCategory,
                        @ParamContext,
                        @ParamValue
                    );
                    select last_insert_rowid();";

                cmd.Parameters.Add(new SQLiteParameter("@ParamUserName", item.UserName));
                cmd.Parameters.Add(new SQLiteParameter("@ParamModificationDate", DateTime.Now));
                cmd.Parameters.Add(new SQLiteParameter("@ParamBucket", item.Bucket));
                cmd.Parameters.Add(new SQLiteParameter("@ParamBucketCategory", item.BucketCategory));
                cmd.Parameters.Add(new SQLiteParameter("@ParamContext", JsonConvert.SerializeObject(item.Context)));
                cmd.Parameters.Add(new SQLiteParameter("@ParamValue", item.Value));

                using (SQLiteDataReader reader = cmd.ExecuteReader())
                {
                    reader.Read();

                    int id = reader.GetInt32(0);

                    return this.Get(id).First();
                }
            }
        }
        public bool Update(InputData item)
        {
            using (SQLiteConnection conn = new SQLiteConnection("Data Source=Db/InputOutput.db"))
            using (SQLiteCommand cmd = conn.CreateCommand())
            {
                conn.Open();
                cmd.CommandText =
                    @"UPDATE Data
                    SET
                        UserName = @ParamUserName,
                        ModificationDate = @ParamModificationDate,
                        Bucket = @ParamBucket,
                        BucketCategory = @ParamBucketCategory,
                        Context = @ParamContext,
                        Value = @ParamValue
                    WHERE
                        Id = @ParamId";

                cmd.Parameters.Add(new SQLiteParameter("@ParamId", item.Id));
                cmd.Parameters.Add(new SQLiteParameter("@ParamUserName", item.UserName));
                cmd.Parameters.Add(new SQLiteParameter("@ParamModificationDate", DateTime.Now));
                cmd.Parameters.Add(new SQLiteParameter("@ParamBucket", item.Bucket));
                cmd.Parameters.Add(new SQLiteParameter("@ParamBucketCategory", item.BucketCategory));
                cmd.Parameters.Add(new SQLiteParameter("@ParamContext", JsonConvert.SerializeObject(item.Context)));
                cmd.Parameters.Add(new SQLiteParameter("@ParamValue", item.Value));

                using (SQLiteDataReader reader = cmd.ExecuteReader())
                {
                    reader.Read();

                    return true;
                }
            }
        }