pgxWrappy — потому что жизнь слишком коротка для ручного сканирования в Go! �
- воскресенье, 27 июля 2025 г. в 00:00:08
// 🚫 БЫЛО (кошмар на 10 строк):
rows, _ := conn.Query(ctx, "SELECT id, name FROM users")
defer rows.Close()
var users []User
for rows.Next() {
var u User
rows.Scan(&u.ID, &u.Name)
users = append(users, u)
}
// ✅ СТАЛО (магия в 1 строку!):
var users []User
db.Select(ctx, &users, "SELECT id, name FROM users") // ✨ Волшебство!
Структуры 🏗
Вложенные структуры 🏗➡🏗
Слайсы 🍕
Указатели 👉
Кастомные типы 🎨
type Profile struct {
Bio string `db:"bio"`
Pic string `db:"avatar_url"`
}
type User struct {
ID int `db:"id"`
Name string `db:"name"`
Profile Profile `db:"profile"` // 💫 Автораскрытие вложенности!
}
// Запрос просто должен содержать profile_bio и profile_avatar_url
db.Get(ctx, &user, "SELECT ..., bio AS profile_bio, avatar_url AS profile_avatar_url ...")
⏱ Экономия 30% времени на рутинном коде
📚 Сохраняем всю мощь pgx под капотом
🎯 Простота миграции - подходит к существующим проектам
go get -u github.com/Arlandaren/pgxWrappy # ⬇️ Одна команда - и готово!
// 🛠 Настройка за 5 секунд:
db := pgxwrappy.NewWrapper(pool) // 🎯 Вот и всё!
// 💾 Пример CRUD:
db.Get(ctx, &user, "SELECT * FROM users WHERE id=$1", 42) // READ
db.Exec(ctx, "UPDATE users SET name=$1 WHERE id=$2", "Bob", 42) // UPDATE
pgxWrappy | Чистый pgx | GORM | sqlx | |
---|---|---|---|---|
Удобство | 😍 | 😐 | 😊 | 😊 |
Производительность | 🚀🚀🚀 | 🚀🚀🚀🚀 | 🚀 | 🚀🚀 |
Вложенные структуры | ✅ | ❌ | ✅ | ✅ |
PostgreSQL фичи | ✅✅ | ✅✅✅ | ✅ | ✅✅ |
💡 Идеальный баланс между производительностью и удобством!
🧵 Потокобезопасность из коробки
🔄 Поддержка context.Context
📛 Ясные ошибки с stack trace
🧩 Простое расширение функционала
💖 Нравится идея? Поставьте звезду на GitHub:
https://github.com/Arlandaren/pgxWrappy
🛠 Хотите помочь? Присылайте PR и идеи!
🐞 Нашли баг? Открывайте issue!
pgxWrappy - потому что жизнь слишком коротка для ручного сканирования! 😁