44 lines
866 B
Go
44 lines
866 B
Go
package api
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/jmoiron/sqlx"
|
|
)
|
|
|
|
// Server serves HTTP requests for our banking service.
|
|
type Server struct {
|
|
store *sqlx.DB
|
|
router *gin.Engine
|
|
}
|
|
|
|
func NewServer(store *sqlx.DB) (*Server, error) {
|
|
server := &Server{
|
|
store: store,
|
|
}
|
|
|
|
server.setupRouter()
|
|
return server, nil
|
|
}
|
|
|
|
func (server *Server) setupRouter() {
|
|
router := gin.Default()
|
|
|
|
router.GET("/guilds", server.listGuilds)
|
|
router.GET("/guilds/:guild_id", server.getGuild)
|
|
router.POST("/guilds", server.createGuild)
|
|
router.DELETE("/guilds/:guild_id", server.deleteGuild)
|
|
|
|
authRoutes := router.Group("/")
|
|
authRoutes.GET("/accounts", server.listAccounts)
|
|
|
|
server.router = router
|
|
}
|
|
|
|
func (server *Server) Start(address string) error {
|
|
return server.router.Run(address)
|
|
}
|
|
|
|
func errorResponse(err error) gin.H {
|
|
return gin.H{"error": err.Error()}
|
|
}
|