Files
easywish/backend/internal/services/profile.go
Nikolai Papin f65439fb50 feat: fully implement profile controller;
feat: implement file upload handling in controller with size and type validation;
feat: add custom validation rules for bio and color hex fields;
refactor: enhance request handling with dedicated client info extraction;
chore: update profile DTOs with validation tags;
docs: profile controller swagger
2025-07-19 22:57:44 +03:00

70 lines
2.4 KiB
Go

// Copyright (c) 2025 Nikolai Papin
//
// This file is part of Easywish
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
// the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
package services
import (
"easywish/internal/database"
"easywish/internal/dto"
"github.com/go-redis/redis/v8"
"go.uber.org/zap"
)
type ProfileService interface {
GetProfileByUsername(cinfo dto.ClientInfo, username string) (dto.ProfileDto, error)
GetMyProfile(cinfo dto.ClientInfo) (dto.ProfileDto, error)
UpdateProfile(cinfo dto.ClientInfo, newProfile dto.ProfileDto) (bool, error)
GetProfileSettings(cinfo dto.ClientInfo) (dto.ProfileSettingsDto, error)
UpdateProfileSettings(cinfo dto.ClientInfo, newProfileSettings dto.ProfileSettingsDto) (bool, error)
UploadAvatar(cinfo dto.ClientInfo, filePath string) (string, error)
}
type profileServiceImpl struct {
log *zap.Logger
dbctx database.DbContext
redis *redis.Client
}
func NewProfileService(_log *zap.Logger, _dbctx database.DbContext, _redis *redis.Client) ProfileService {
return &profileServiceImpl{log: _log, dbctx: _dbctx, redis: _redis}
}
func (p *profileServiceImpl) GetMyProfile(cinfo dto.ClientInfo) (dto.ProfileDto, error) {
panic("unimplemented")
}
func (p *profileServiceImpl) GetProfileByUsername(cinfo dto.ClientInfo, username string) (dto.ProfileDto, error) {
panic("unimplemented")
}
func (p *profileServiceImpl) GetProfileSettings(cinfo dto.ClientInfo) (dto.ProfileSettingsDto, error) {
panic("unimplemented")
}
func (p *profileServiceImpl) UpdateProfile(cinfo dto.ClientInfo, newProfile dto.ProfileDto) (bool, error) {
panic("unimplemented")
}
func (p *profileServiceImpl) UpdateProfileSettings(cinfo dto.ClientInfo, newProfileSettings dto.ProfileSettingsDto) (bool, error) {
panic("unimplemented")
}
func (p *profileServiceImpl) UploadAvatar(cinfo dto.ClientInfo, filePath string) (string, error) {
panic("unimplemented")
}