🚀 Запарило ручное сканирование в pgx? Встречайте pgxWrappy — супер-удобную обертку для PostgreSQL в Golang! 🐘💨
🔥 Больше никакого boilerplate-кода!
// 🚫 БЫЛО (кошмар на 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") // ✨ Волшебство!
✨ Главные фишки pgxWrappy
📌 Автомагическое сканирование во что угодно!
-
Структуры 🏗
-
Вложенные структуры 🏗➡🏗
-
Слайсы 🍕
-
Указатели 👉
-
Кастомные типы 🎨
� Пример с вложенностью:
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 ...")
🚦 Три причины выбрать pgxWrappy:
-
⏱ Экономия 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 — потому что жизнь слишком коротка для ручного сканирования! 😁
ссылка на оригинал статьи https://habr.com/ru/articles/931242/
Добавить комментарий