first commit

This commit is contained in:
Sas Andy
2024-12-09 09:51:19 +07:00
commit ecc5dfd9c0
69 changed files with 5365 additions and 0 deletions

88
cmd/api/api.go Normal file
View File

@@ -0,0 +1,88 @@
package api
import (
"log"
"net/http"
"github.com/gorilla/mux"
"github.com/jmoiron/sqlx"
"github.com/rs/cors"
httpSwagger "github.com/swaggo/http-swagger/v2"
"sismedika.com/sas/westone/services/auth"
"sismedika.com/sas/westone/services/doctor"
"sismedika.com/sas/westone/services/error_log"
"sismedika.com/sas/westone/services/patient"
"sismedika.com/sas/westone/services/person"
"sismedika.com/sas/westone/services/terminology"
"sismedika.com/sas/westone/services/user"
)
type APIServer struct {
addr string
db *sqlx.DB
}
func NewAPIServer(addr string, db *sqlx.DB) *APIServer {
return &APIServer{
addr: addr,
db: db,
}
}
func (s *APIServer) Run() error {
router := mux.NewRouter()
subrouter := router.PathPrefix("/westone/api/v1").Subrouter()
subrouter.PathPrefix("/swagger/").Handler(httpSwagger.Handler())
// Error Log
errorLogStore := error_log.NewStore(s.db)
// terminology
terminologyStore := terminology.NewStore(s.db)
terminologyHandler := terminology.NewHandler(terminologyStore)
terminologyHandler.RegisterRoutes(subrouter)
// user
userStore := user.NewStore(s.db)
// auth
oauthStore := auth.NewStore(s.db)
oauthHandler := auth.NewHandler(oauthStore, errorLogStore, userStore)
oauthHandler.RegisterRoutes(subrouter)
// md person
personStore := person.NewStore(s.db)
personHandler := person.NewHandler(personStore, terminologyStore)
personHandler.RegisterRoutes(subrouter)
// md patient
patientStore := patient.NewStore(s.db)
patientHandler := patient.NewHandler(patientStore)
patientHandler.RegisterRoutes(subrouter)
// md doctor
doctorStore := doctor.NewStore(s.db)
doctorHandler := doctor.NewHandler(doctorStore)
doctorHandler.RegisterRoutes(subrouter)
// userHandler := user.NewHandler(userStore, errorLogStore)
// userHandler.RegisterRoutes(subrouter)
// productStore := product.NewStore(s.db)
// productHandler := product.NewHandler(productStore, userStore)
// productHandler.RegisterRoutes(subrouter)
// orderStore := order.NewStore(s.db)
// cartHandler := cart.NewHandler(productStore, orderStore, userStore)
// cartHandler.RegisterRoutes(subrouter)
// Serve static files
router.PathPrefix("/").Handler(http.FileServer(http.Dir("static")))
log.Println("Listening on", s.addr)
corsHandler := cors.Default().Handler(router)
return http.ListenAndServe(s.addr, corsHandler)
}