using System;
using Npgsql;

namespace ProviderApp
{
    public static class DatabaseHelper
    {
        /// <summary>
        /// Выполняет INSERT и возвращает сгенерированный ID
        /// </summary>
        public static int InsertAndGetId(string insertSql, Action<NpgsqlCommand> addParameters)
        {
            using (var conn = DBConnection.GetConnection())
            {
                // Убираем точку с запятой если есть и добавляем RETURNING
                string sql = insertSql.TrimEnd(';') + " RETURNING *id*";

                // Определяем какое поле ID нужно вернуть
                if (insertSql.Contains("clients"))
                    sql = sql.Replace("*id*", "client_id");
                else if (insertSql.Contains("tariffs"))
                    sql = sql.Replace("*id*", "tariff_id");
                else if (insertSql.Contains("contracts"))
                    sql = sql.Replace("*id*", "contract_id");
                else if (insertSql.Contains("employees"))
                    sql = sql.Replace("*id*", "employee_id");
                else
                    sql = sql.Replace("*id*", "id");

                using (var cmd = new NpgsqlCommand(sql, conn))
                {
                    addParameters(cmd);
                    return Convert.ToInt32(cmd.ExecuteScalar());
                }
            }
        }

        /// <summary>
        /// Выполняет UPDATE
        /// </summary>
        public static void Update(string updateSql, Action<NpgsqlCommand> addParameters)
        {
            using (var conn = DBConnection.GetConnection())
            using (var cmd = new NpgsqlCommand(updateSql, conn))
            {
                addParameters(cmd);
                cmd.ExecuteNonQuery();
            }
        }
    }
}