1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package main
- import (
- "database/sql"
- "fmt"
- "code.osinet.fr/fgm/kurz/api"
- "code.osinet.fr/fgm/kurz/domain"
- "code.osinet.fr/fgm/kurz/infrastructure"
- _ "code.osinet.fr/fgm/kurz/migrations"
- "github.com/spf13/cobra"
- "github.com/spf13/viper"
- )
- var cmdServeAPI = &cobra.Command{
- Args: cobra.NoArgs,
- Long: "Serve Kurz as a JSON web API.",
- Run: serveAPIHandler,
- Short: "Serve Kurz API",
- Use: "api",
- }
- func init() {
- cmdServe.AddCommand(cmdServeAPI)
- }
- func registerInfrastructure() *sql.DB {
- dbDriver, dbDsn := infrastructure.ParseDbCred()
- db, err := infrastructure.DbDial(dbDriver, dbDsn)
- if err != nil {
- panic(err)
- }
- domain.RegisterRepositories(
- infrastructure.MySQLShortURLRepository{DB: db},
- infrastructure.MySQLTargetURLRepository{DB: db},
- )
- return db
- }
- // Set up infrastructure and listen on specified address.
- func serveAPIHandler(_ *cobra.Command, args []string) {
- db := registerInfrastructure()
- defer db.Close()
- address := viper.Get("api.address").(string)
- err := api.ListenAndServe(address)
- fmt.Println(err)
- }
|