package app import ( "context" "git.3crabs.ru/save_my_money/smm_core/internal/services/budget" "git.3crabs.ru/save_my_money/smm_core/internal/services/category" "git.3crabs.ru/save_my_money/smm_core/internal/services/user" proto "git.3crabs.ru/save_my_money/smm_core/proto" ) type Server struct { proto.UnsafeSmmCoreServer categoryService *category.CategoryService userService *user.UserService budgetService *budget.BudgetService } func NewServer( categoryService *category.CategoryService, userService *user.UserService, budgetService *budget.BudgetService, ) proto.SmmCoreServer { return &Server{ categoryService: categoryService, userService: userService, budgetService: budgetService, } } func (s *Server) Ping(context.Context, *proto.PingReq) (*proto.PingRsp, error) { return &proto.PingRsp{}, nil } func (s *Server) AddUser(ctx context.Context, req *proto.AddUserReq) (*proto.User, error) { user, err := s.userService.AddUser( ctx, &user.UserEntity{ Username: req.Username, Password: req.Password, }, ) if err != nil { return nil, err } return mapUser(user), nil } func (s *Server) Login(ctx context.Context, req *proto.LoginReq) (*proto.User, error) { user, err := s.userService.Login( ctx, &user.UserEntity{ Username: req.Username, Password: req.Password, }, ) if err != nil { return nil, err } return mapUser(user), nil } func mapUser(user *user.UserEntity) *proto.User { return &proto.User{ Id: int32(user.Id), Username: user.Username, } } func (s *Server) AddBudget(ctx context.Context, req *proto.AddBudgetReq) (*proto.Budget, error) { budget, err := s.budgetService.AddBudget( ctx, &budget.BudgetEntity{ Name: req.Name, StartDay: int(req.StartDay), MonthlyLimit: int(req.MonthlyLimit), }, ) if err != nil { return nil, err } return mapBudget(budget), nil } func (s *Server) GetBudgets(ctx context.Context, req *proto.GetBudgetsReq) (*proto.Budgets, error) { budgets, err := s.budgetService.GetBudgets( ctx, ) if err != nil { return nil, err } res := make([]*proto.Budget, 0, len(budgets)) for _, budget := range budgets { res = append(res, mapBudget(budget)) } return &proto.Budgets{ Budgets: res, }, nil } func mapBudget(budget *budget.BudgetEntity) *proto.Budget { return &proto.Budget{ Id: int32(budget.Id), Name: budget.Name, StartDay: int32(budget.StartDay), MonthlyLimit: int32(budget.MonthlyLimit), } } // AddCategory implements proto.SmmCoreServer. func (s *Server) AddCategory(context.Context, *proto.AddCategoryReq) (*proto.Category, error) { panic("unimplemented") } // AddUserToBudget implements proto.SmmCoreServer. func (s *Server) AddUserToBudget(context.Context, *proto.AddUserToBudgetReq) (*proto.Budget, error) { panic("unimplemented") } // AddWaste implements proto.SmmCoreServer. func (s *Server) AddWaste(context.Context, *proto.AddWasteReq) (*proto.Waste, error) { panic("unimplemented") } // DeleteBudget implements proto.SmmCoreServer. func (s *Server) DeleteBudget(context.Context, *proto.DeleteBudgetReq) (*proto.Budget, error) { panic("unimplemented") } // DeleteCategories implements proto.SmmCoreServer. func (s *Server) DeleteCategories(context.Context, *proto.DeleteCategoriesReq) (*proto.Category, error) { panic("unimplemented") } // DeleteWaste implements proto.SmmCoreServer. func (s *Server) DeleteWaste(context.Context, *proto.DeleteWasteReq) (*proto.Waste, error) { panic("unimplemented") } // GetBudgetUsers implements proto.SmmCoreServer. func (s *Server) GetBudgetUsers(context.Context, *proto.GetBudgetUsersReq) (*proto.Users, error) { panic("unimplemented") } // GetCategories implements proto.SmmCoreServer. func (s *Server) GetCategories(context.Context, *proto.GetCategoriesReq) (*proto.Categories, error) { panic("unimplemented") } // GetCategoriesStat implements proto.SmmCoreServer. func (s *Server) GetCategoriesStat(context.Context, *proto.GetCategoriesStatReq) (*proto.CategoriesStat, error) { panic("unimplemented") } // RemoveUserFromBudget implements proto.SmmCoreServer. func (s *Server) RemoveUserFromBudget(context.Context, *proto.RemoveUserFromBudgetReq) (*proto.Budget, error) { panic("unimplemented") } // UpdateBudget implements proto.SmmCoreServer. func (s *Server) UpdateBudget(context.Context, *proto.UpdateBudgetReq) (*proto.Budget, error) { panic("unimplemented") } // UpdateCategory implements proto.SmmCoreServer. func (s *Server) UpdateCategory(context.Context, *proto.UpdateCategoryReq) (*proto.Category, error) { panic("unimplemented") }