package store import "fmt" // SQL-шаблоны, которые собираются из заранее известных фрагментов // (имена колонок заданы в коде, значения всегда идут параметрами). // Конкатенация через fmt.Sprintf здесь безопасна и проверяется тестами. const updateGuildTemplate = `UPDATE guilds SET %s WHERE id = ?` const selectGuildsForUserTemplate = `SELECT %s FROM guilds g JOIN guild_members m ON m.guild_id = g.id WHERE m.user_id = ? ORDER BY g.id` const updateChannelTemplate = `UPDATE channels SET %s WHERE id = ?` const updateGuildMemberTemplate = `UPDATE guild_members SET %s WHERE guild_id = ? AND user_id = ?` const selectMemberRolesTemplate = `SELECT %s FROM member_roles mr JOIN roles r ON r.id = mr.role_id WHERE mr.guild_id = ? AND mr.user_id = ? ORDER BY r.position DESC, r.id` // buildQuery подставляет фрагмент SQL в шаблон. func buildQuery(template string, fragment string) string { return fmt.Sprintf(template, fragment) } const updateRoleTemplate = `UPDATE roles SET %s WHERE id = ?`