https://github.com/hanpama/pgmg
PostgresQL model generator
https://github.com/hanpama/pgmg
code-generation golang postgresql sql
Last synced: 7 months ago
JSON representation
PostgresQL model generator
- Host: GitHub
- URL: https://github.com/hanpama/pgmg
- Owner: hanpama
- Created: 2019-10-07T04:17:33.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-02-17T15:40:10.000Z (about 6 years ago)
- Last Synced: 2025-03-01T00:12:11.269Z (about 1 year ago)
- Topics: code-generation, golang, postgresql, sql
- Language: Go
- Homepage:
- Size: 343 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PGMG
> This package is in development. The API is not stable and may change.
PostgreSQL Model Generator
```
usage: pgmg -database -schema -out
See https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
for more information about connection string parameters.
1. generate a single file:
go run github.com/hanpama/pgmg \
-database 'user=postgres dbname=pgmg sslmode=disable' \
-schema wise \
-out example/schema.go # file
2. generate each file per table:
go run github.com/hanpama/pgmg \
-database 'user=postgres dbname=pgmg sslmode=disable' \
-schema wise \
-out example/ # directory
```
## PGMG Generates
* https://github.com/hanpama/pgmg/tree/master/example/tables/
## How to use
Generated PGMG models have no concrete dependency on any SQL driver,
but depend on an interface `SQLHandle`.
```go
type SQLHandle interface {
QueryAndReceive(ctx context.Context, receiver func(int) []interface{}, sql string, args ...interface{}) (int, error)
ExecAndCount(ctx context.Context, sql string, args ...interface{}) (int64, error)
}
```
So your database connection should implement `SQLHandle` like the [test database](https://github.com/hanpama/pgmg/tree/master/example/testdb.go).
The `receiver func(int) []interface{}` parameter is a function returning pointers for `rows.Scan()`-like functions
to scan data into.
## Full Example
* https://github.com/hanpama/pgmg/tree/master/example/tables/tables_test.go