golang database modelling library
Modl is a library which provides database modelling and mapping. It is a fork of James Cooper's wonderful gorp.
Note. Modl's public facing interface is considered unfinished and open to change. The current API will not be broken lightly, but additions are likely. As Gorp's behavior moves on, Modl may adopt some of it or may not.
Modl's goal is to clean up bits of gorp's API, add some additional features like query building helpers and additional control over SQL generation, and to reuse lower level abstractions provided in sqlx. The driving philosophies behind modl are:
database/sql, do it that way
Since modl is a gorp fork, here are some of its major behavioral differences:
driver.Valuerfor custom types.
To use the
test-allscript, set the following environment variables:
# mysql DSN, note parseTime arg for time scanning support: MODL_MYSQL_DSN="username:[email protected]/dbname?parseTime=true"
postgres DSN, like:
MODL_POSTGRES_DSN="user=username password=pw dbname=dbname sslmode=disable"
sqlite DSN, which is a path
optional, will fail the test if any DBs are skipped (for CI, mostly)
In addition to this, you can create an
environfile in this directory which will be sourced and ignored by git. You can continue to use the
MODL_TEST_DIALECTvariables if you want to manually run
go testor if you want to run the benchmarks, as described below.
The original README.md follows:
The API of Modl has been quite stable since its conception. Changes to the API are avoided as much as possible but there is currently no promise of forward or backward compatibility.
Modl relies heavily upon the
database/sqlpackage, and has a Dialect interface which can be used to smooth over differences between databases. There is a list of sql drivers on the Go wiki, most of which Modl should be compatible with. Dialects are provided for:
The test suite is continuously run against all of these databases.
API Documentation is available on godoc.
Modl performs similar to Gorp. There are benchmarks in
modl_test.gowhich will benchmark native querying w/
database/sqland manual Scanning with what modl does. Modl should perform between 2-3% slower than hand-done SQL.
The original contributors to gorp are: