public void Create(Badge.Badge badge)
        {
            string query = "INSERT INTO badges VALUES (@id, @name, @desc, @user_id)";

            using var cmd = new NpgsqlCommand(query, _connection, _transaction);
            cmd.Parameters.AddWithValue("id", badge.ID);
            cmd.Parameters.AddWithValue("name", badge.Name);
            cmd.Parameters.AddWithValue("desc", badge.Description);
            cmd.Parameters.AddWithValue("user_id", badge.UserID);

            cmd.ExecuteNonQuery();
        }
        public Badge.Badge GetBadge(Guid userID, string name)
        {
            string query = "select * from badges where user_id = @user_id AND name = @name";

            Badge.Badge data;
            using (var cmd = new NpgsqlCommand(query, _connection, _transaction))
            {
                cmd.Parameters.AddWithValue("user_id", userID);
                cmd.Parameters.AddWithValue("name", name);
                using NpgsqlDataReader reader = cmd.ExecuteReader();
                if (!reader.Read())
                {
                    return(null);
                }

                data = new Badge.Badge(reader.GetGuid(0), reader.GetString(1), reader.GetString(2), reader.GetGuid(3), reader.GetDateTime(4));
            }

            return(data);
        }
        public List <Badge.Badge> Find(Guid userID)
        {
            string             query  = "select * from badges where user_id = @user_id";
            List <Badge.Badge> badges = new List <Badge.Badge>();

            Badge.Badge data;
            using (var cmd = new NpgsqlCommand(query, _connection, _transaction))
            {
                cmd.Parameters.AddWithValue("user_id", userID);
                using NpgsqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    data = new Badge.Badge(reader.GetGuid(0), reader.GetString(1), reader.GetString(2), reader.GetGuid(3), reader.GetDateTime(4));

                    badges.Add(data);
                }
            }

            return(badges);
        }