Clarifai/go-fixtures
forked from zhanchch/go-fixtures
Captured source
source ↗published Feb 18, 2018seen 5dcaptured 13hhttp 200method plain
Clarifai/go-fixtures
Description: Django style fixtures for Golang's excellent built-in database/sql library.
Language: Go
License: MPL-2.0
Stars: 0
Forks: 1
Open issues: 0
Created: 2018-02-18T01:04:08Z
Pushed: 2020-06-22T17:22:29Z
Default branch: master
Fork: yes
Parent repository: zhanchch/go-fixtures
Archived: yes
README: 
go-fixtures
Django style fixtures for Golang's excellent built-in database/sql library. Currently only YAML fixtures are supported.
There are two reserved values you can use for datetime fields:
ON_INSERT_NOW()will only be used when a row is being insertedON_UPDATE_NOW()will only be used when a row is being updated
Example YAML fixture:
--- - table: 'some_table' pk: id: 1 fields: string_field: 'foobar' boolean_field: true created_at: 'ON_INSERT_NOW()' updated_at: 'ON_UPDATE_NOW()' - table: 'other_table' pk: id: 2 fields: int_field: 123 boolean_field: false created_at: 'ON_INSERT_NOW()' updated_at: 'ON_UPDATE_NOW()' - table: 'join_table' pk: some_id: 1 other_id: 2
Example integration for your project:
package main
import (
"database/sql"
"io/ioutil"
"log"
fixtures "github.com/AreaHQ/go-fixtures"
"github.com/codegangsta/cli"
// Drivers
_ "github.com/lib/pq"
)
var (
cliApp *cli.App
)
func init() {
cliApp = cli.NewApp()
cliApp.Name = "your-project"
cliApp.Usage = "Project's usage"
cliApp.Author = "Your Name"
cliApp.Email = "your@email"
cliApp.Version = "0.0.0"
}
func main() {
db, err := sql.Connect("postgres", "user=foo dbname=bar sslmode=disable")
if err != nil {
log.Fatal(err)
}
defer db.Close()
cliApp.Commands = []cli.Command{
{
Name: "loaddata",
Usage: "load data from fixture",
Action: func(c *cli.Context) {
data, err := ioutil.ReadFile(c.Args().First())
if err != nil {
log.Fatal(err)
}
if err := fixtures.Load(data, db, "postgres"); err != nil {
log.Fatal(err)
}
},
},
{
Name: "runserver",
Usage: "run web server",
Action: func(c *cli.Context) {
// Run your web server here
},
},
}
cliApp.Run(os.Args)
}