add catalog
This commit is contained in:
		
							parent
							
								
									286048d068
								
							
						
					
					
						commit
						be7b5c505e
					
				@ -1,6 +1,8 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"cake_crm/internal/app"
 | 
			
		||||
	"cake_crm/internal/models/storage/storage_file"
 | 
			
		||||
	crm "cake_crm/proto"
 | 
			
		||||
	"context"
 | 
			
		||||
	"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
 | 
			
		||||
@ -11,30 +13,12 @@ import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type server struct {
 | 
			
		||||
	crm.UnimplementedCRMServer
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewServer() *server {
 | 
			
		||||
	return &server{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *server) GetCatalog(ctx context.Context, req *crm.GetCatalogReq) (*crm.CatalogRsp, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	//ctx, cancel := context.WithCancel(context.Background())
 | 
			
		||||
	//defer cancel()
 | 
			
		||||
	//
 | 
			
		||||
	//storage := storage_file.NewStorageFile("resources/db.json")
 | 
			
		||||
	//_ = storage
 | 
			
		||||
	//
 | 
			
		||||
	//server := server_web.NewServer(storage, 8080)
 | 
			
		||||
	//err := server.Run(ctx)
 | 
			
		||||
	//if err != nil {
 | 
			
		||||
	//	panic(err)
 | 
			
		||||
	//}
 | 
			
		||||
 | 
			
		||||
	storage := storage_file.NewStorageFile()
 | 
			
		||||
	_ = storage
 | 
			
		||||
 | 
			
		||||
	// Create a listener on TCP port
 | 
			
		||||
	lis, err := net.Listen("tcp", ":8080")
 | 
			
		||||
@ -45,7 +29,7 @@ func main() {
 | 
			
		||||
	// Create a gRPC server object
 | 
			
		||||
	s := grpc.NewServer()
 | 
			
		||||
	// Attach the Greeter service to the server
 | 
			
		||||
	crm.RegisterCRMServer(s, &server{})
 | 
			
		||||
	crm.RegisterCRMServer(s, app.NewServer(storage))
 | 
			
		||||
	// Serve gRPC server
 | 
			
		||||
	log.Println("Serving gRPC on 0.0.0.0:8080")
 | 
			
		||||
	go func() {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										26
									
								
								internal/app/server.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								internal/app/server.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
package app
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"cake_crm/internal/models/storage"
 | 
			
		||||
	crm "cake_crm/proto"
 | 
			
		||||
	"context"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Server struct {
 | 
			
		||||
	crm.UnimplementedCRMServer
 | 
			
		||||
	storage storage.IStorage
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewServer(storage storage.IStorage) *Server {
 | 
			
		||||
	return &Server{
 | 
			
		||||
		storage: storage,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *Server) GetCatalog(ctx context.Context, _ *crm.GetCatalogReq) (*crm.CatalogRsp, error) {
 | 
			
		||||
	categories, err := s.storage.GetCatalog(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return &crm.CatalogRsp{Categories: categories}, nil
 | 
			
		||||
}
 | 
			
		||||
@ -1,6 +1,9 @@
 | 
			
		||||
package storage
 | 
			
		||||
 | 
			
		||||
import "context"
 | 
			
		||||
import (
 | 
			
		||||
	crm "cake_crm/proto"
 | 
			
		||||
	"context"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Product struct {
 | 
			
		||||
	ID   int    `json:"id"`
 | 
			
		||||
@ -17,4 +20,5 @@ type IStorage interface {
 | 
			
		||||
	GetAllProducts(ctx context.Context) ([]Product, error)
 | 
			
		||||
	GetProductByID(ctx context.Context, id int) (Product, error)
 | 
			
		||||
	GetBreadcrumbs(ctx context.Context, id int) ([]Breadcrumb, error)
 | 
			
		||||
	GetCatalog(ctx context.Context) ([]*crm.CatalogRsp_Category, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -2,17 +2,28 @@ package storage_file
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"cake_crm/internal/models/storage"
 | 
			
		||||
	crm "cake_crm/proto"
 | 
			
		||||
	"context"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"os"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type storageFile struct {
 | 
			
		||||
	filepath string
 | 
			
		||||
type storageFile struct{}
 | 
			
		||||
 | 
			
		||||
func NewStorageFile() storage.IStorage {
 | 
			
		||||
	return &storageFile{}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewStorageFile(filepath string) storage.IStorage {
 | 
			
		||||
	return &storageFile{
 | 
			
		||||
		filepath: filepath,
 | 
			
		||||
func (s *storageFile) GetCatalog(_ context.Context) ([]*crm.CatalogRsp_Category, error) {
 | 
			
		||||
	data, err := os.ReadFile("resources/catalog.json")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	var res []*crm.CatalogRsp_Category
 | 
			
		||||
	if err := json.Unmarshal(data, &res); err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (s *storageFile) GetAllProducts(ctx context.Context) ([]storage.Product, error) {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								resources/catalog.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								resources/catalog.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "id": 0,
 | 
			
		||||
    "name": "Главная",
 | 
			
		||||
    "url": "/categories/0",
 | 
			
		||||
    "children": [
 | 
			
		||||
      {
 | 
			
		||||
        "id": 1,
 | 
			
		||||
        "name": "Пряники",
 | 
			
		||||
        "url": "/categories/1",
 | 
			
		||||
        "children": []
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "id": 2,
 | 
			
		||||
        "name": "Пахлава",
 | 
			
		||||
        "url": "/categories/2",
 | 
			
		||||
        "children": []
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user