add server

This commit is contained in:
Владимир Фёдоров 2024-05-13 04:28:51 +07:00
parent 00f28e3f7b
commit 2c7aedd5c2
5 changed files with 66 additions and 0 deletions

View File

@ -2,9 +2,20 @@ package main
import ( import (
"cake_crm/internal/models/storage/storage_file" "cake_crm/internal/models/storage/storage_file"
"cake_crm/internal/services/server_web"
"context"
) )
func main() { func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
storage := storage_file.NewStorageFile("resources/db.json") storage := storage_file.NewStorageFile("resources/db.json")
_ = storage _ = storage
server := server_web.NewServer(storage, 8080)
err := server.Run(ctx)
if err != nil {
panic(err)
}
} }

2
go.mod
View File

@ -1,3 +1,5 @@
module cake_crm module cake_crm
go 1.22 go 1.22
require github.com/go-pkgz/routegroup v1.1.1 // indirect

2
go.sum Normal file
View File

@ -0,0 +1,2 @@
github.com/go-pkgz/routegroup v1.1.1 h1:Dm5IBiEmUbQT+3rliBimhX0SifnZp/uRF/WOu3XPmms=
github.com/go-pkgz/routegroup v1.1.1/go.mod h1:kDDPDRLRiRY1vnENrZJw1jQAzQX7fvsbsHGRQFNQfKc=

View File

@ -0,0 +1,8 @@
package server_web
import "context"
type IServer interface {
Run(ctx context.Context) error
Stop(ctx context.Context) error
}

View File

@ -0,0 +1,43 @@
package server_web
import (
"cake_crm/internal/models/storage"
"context"
"fmt"
"github.com/go-pkgz/routegroup"
"net/http"
)
type server struct {
storage storage.IStorage
port int
}
func NewServer(
storage storage.IStorage,
port int,
) IServer {
return &server{
storage: storage,
port: port,
}
}
func (s *server) Run(ctx context.Context) error {
router := routegroup.New(http.NewServeMux())
router.HandleFunc("GET /products", s.getAllProductsHandler)
router.HandleFunc("GET /products/:id", s.getProductById)
router.HandleFunc("GET /category/:id/breadcrumbs", s.getBreadcrumbsByCategoryId)
return http.ListenAndServe(fmt.Sprintf(":%d", s.port), router)
}
func (s *server) Stop(ctx context.Context) error {
//TODO implement me
panic("implement me")
}
func (s *server) getAllProductsHandler(w http.ResponseWriter, r *http.Request) {}
func (s *server) getProductById(w http.ResponseWriter, r *http.Request) {}
func (s *server) getBreadcrumbsByCategoryId(w http.ResponseWriter, r *http.Request) {}