keel/examples/persistence/postgres/main.go
2023-08-11 09:55:34 +02:00

56 lines
1.2 KiB
Go

package main
import (
"github.com/davecgh/go-spew/spew"
"github.com/foomo/keel"
"github.com/foomo/keel/examples/persistence/postgres/repository"
"github.com/foomo/keel/log"
keelpostgres "github.com/foomo/keel/persistence/postgres"
)
// docker run -it --rm -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=postgres postgres:11-alpine
func main() {
svr := keel.NewServer()
// get the logger
l := svr.Logger()
// create persistor
persistor, err := keelpostgres.New(
svr.Context(),
"postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable",
keelpostgres.WithInit(`
create table if not exists tasks (
id serial primary key,
description text not null
);
`),
)
// use log must helper to exit on error
log.Must(l, err, "failed to create persistor")
// ensure to add the persistor to the closers
svr.AddClosers(persistor)
repo := repository.NewTaskRepository(persistor)
if value, err := repo.List(svr.Context()); err != nil {
l.Error(err.Error())
} else {
spew.Dump(value)
}
if err := repo.Insert(svr.Context(), "one"); err != nil {
l.Error(err.Error())
}
if value, err := repo.List(svr.Context()); err != nil {
l.Error(err.Error())
} else {
spew.Dump(value)
}
svr.Run()
}