https://github.com/dreamph/dbre
Golang ORM Database Adapter (Support Bun/Gorm)
https://github.com/dreamph/dbre
bun database database-adapter database-orm go-sql golang gorm orm query repository sql
Last synced: about 1 month ago
JSON representation
Golang ORM Database Adapter (Support Bun/Gorm)
- Host: GitHub
- URL: https://github.com/dreamph/dbre
- Owner: dreamph
- License: mit
- Created: 2024-02-19T09:03:26.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-17T11:10:03.000Z (4 months ago)
- Last Synced: 2025-03-24T11:56:54.643Z (about 2 months ago)
- Topics: bun, database, database-adapter, database-orm, go-sql, golang, gorm, orm, query, repository, sql
- Language: Go
- Homepage:
- Size: 142 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Basic Usage
Full Example [example](example)Full Example with Clean Architecture
[example](https://github.com/dreamph/go-clean-architecture-template)```go
package mainimport (
"context"
"fmt"
"log""github.com/dreamph/dbre"
"github.com/dreamph/dbre/adapters/bun"
bunpg "github.com/dreamph/dbre/adapters/bun/connectors/pg"
"github.com/dreamph/dbre/adapters/gorm"
gormpg "github.com/dreamph/dbre/adapters/gorm/connectors/pg"
"github.com/dreamph/dbre/example/domain"
"go.uber.org/zap"
)func getBunDB(logger *zap.Logger) (dbre.AppIDB, dbre.DBTx, error) {
bunDB, err := bunpg.Connect(&bunpg.Options{
Host: "127.0.0.1",
Port: "5432",
DBName: "dream",
User: "dream",
Password: "password",
ConnectTimeout: 2000,
Logger: logger,
})
if err != nil {
return nil, nil, err
}appDB := bun.NewIDB(bunDB)
dbTx := bun.NewDBTx(bunDB)return appDB, dbTx, nil
}func getGormDB(logger *zap.Logger) (dbre.AppIDB, dbre.DBTx, error) {
bunDB, err := gormpg.Connect(&gormpg.Options{
Host: "127.0.0.1",
Port: "5432",
DBName: "dream",
User: "dream",
Password: "password",
ConnectTimeout: 2000,
Logger: logger,
})
if err != nil {
return nil, nil, err
}appDB := gorm.NewIDB(bunDB)
dbTx := gorm.NewDBTx(bunDB)return appDB, dbTx, nil
}func main() {
logger, err := zap.NewDevelopment()
if err != nil {
log.Fatalf(err.Error())
}
defer logger.Sync()appDB, dbTx, err := getBunDB(logger)
//appDB, dbTx, err := getGormDB(logger)
if err != nil {
log.Fatalf(err.Error())
}
defer func() {
err := appDB.Close()
if err != nil {
log.Fatalf(err.Error())
}
}()ctx := context.Background()
//Simple Usage
countryDbQuery := bun.New[domain.Country](appDB)data := &domain.Country{
Id: "1",
Code: "C1",
Name: "Name",
Status: 20,
}// Create
_, err = countryDbQuery.Create(ctx, data)
if err != nil {
log.Fatalf(err.Error())
}// Update
_, err = countryDbQuery.Update(ctx, data)
if err != nil {
log.Fatalf(err.Error())
}// Find By PK
_, err = countryDbQuery.FindByPK(ctx, &domain.Country{
Id: "1",
})
if err != nil {
log.Fatalf(err.Error())
}// Find One
_, err = countryDbQuery.FindOne(ctx, &domain.Country{
Code: "C1",
})
if err != nil {
log.Fatalf(err.Error())
}// Delete
err = countryDbQuery.Delete(ctx, &domain.Country{
Id: "C1",
})
if err != nil {
log.Fatalf(err.Error())
}// Upsert
_, err = countryDbQuery.Upsert(ctx, data, nil)
if err != nil {
log.Fatalf(err.Error())
}// Find One Where
wb := dbre.WhereBuilder{}
wb.Where("code = ?", "C1")
result, err := countryDbQuery.FindOneWhere(ctx, wb.WhereCauses())
if err != nil {
log.Fatalf(err.Error())
}
fmt.Println(result)// Query List Where
wb = dbre.WhereBuilder{}
wb.Where("status = ?", 20)list, total, err := countryDbQuery.QueryListWhere(ctx, wb.WhereCauses(), &dbre.Limit{Offset: 0, PageSize: 10}, []string{"name"})
if err != nil {
log.Fatalf(err.Error())
}
fmt.Println(list, total)// With Transaction
err = dbTx.WithTx(ctx, func(ctx context.Context, appDB dbre.AppIDB) error {
data2 := &domain.Country{
Id: "1",
Code: "C1",
Name: "Name",
Status: 20,
}
_, err = countryDbQuery.WithTx(appDB).Create(ctx, data2)
if err != nil {
log.Fatalf(err.Error())
}data2.Name = "Name2"
data2.Status = 10_, err = countryDbQuery.WithTx(appDB).Update(ctx, data2)
if err != nil {
log.Fatalf(err.Error())
}return nil
})
if err != nil {
log.Fatalf(err.Error())
}
}```
Buy Me a Coffee
=======
[](https://www.buymeacoffee.com/dreamph)