common/repository/yclients/yclients.go

305 lines
7.4 KiB
Go
Raw Normal View History

package yclients
import (
"context"
"database/sql"
"encoding/json"
"gitea.pena/SQuiz/common/dal/sqlcgen"
"gitea.pena/SQuiz/common/model"
)
type YclientsRepository struct {
queries *sqlcgen.Queries
pool *sql.DB
}
type Deps struct {
Queries *sqlcgen.Queries
Pool *sql.DB
}
func NewYclientsRepository(deps Deps) *YclientsRepository {
return &YclientsRepository{
queries: deps.Queries,
pool: deps.Pool,
}
}
// tokens
2025-10-06 08:49:57 +00:00
func (r *YclientsRepository) InsertYclientsTokens(ctx context.Context, accountID, accessToken string, salonID int32) (*model.YclientsToken, error) {
row, err := r.queries.InsertYclientsTokens(ctx, sqlcgen.InsertYclientsTokensParams{
Accountid: accountID,
Salonid: salonID,
Accesstoken: accessToken,
})
if err != nil {
2025-10-06 08:49:57 +00:00
return nil, err
}
2025-10-06 08:49:57 +00:00
return &model.YclientsToken{
AccountID: row.Accountid,
SalonID: row.Salonid,
AccessToken: row.Accesstoken,
Active: row.Active,
Expiration: row.Expiration,
CreatedAt: row.Createdat,
}, nil
}
func (r *YclientsRepository) UpdateYclientsTokensAccessToken(ctx context.Context, accountID string, salonID int32, yclientsAccessToken string) (*model.YclientsToken, error) {
row, err := r.queries.UpdateYclientsTokensAccessToken(ctx, sqlcgen.UpdateYclientsTokensAccessTokenParams{
Accountid: accountID,
Salonid: salonID,
Accesstoken: yclientsAccessToken,
})
if err != nil {
return nil, err
}
return &model.YclientsToken{
AccountID: row.Accountid,
SalonID: row.Salonid,
AccessToken: row.Accesstoken,
Active: row.Active,
Expiration: row.Expiration,
CreatedAt: row.Createdat,
}, nil
}
func (r *YclientsRepository) UpdateYclientsTokensExpiration(ctx context.Context, accountID string, active, expiration bool) error {
_, err := r.queries.UpdateYclientsTokensExpiration(ctx, sqlcgen.UpdateYclientsTokensExpirationParams{
Accountid: accountID,
Active: active,
Expiration: expiration,
})
if err != nil {
return err
}
return nil
}
func (r *YclientsRepository) GetYclientsUserToken(ctx context.Context, accountID string) (*model.YclientsToken, error) {
row, err := r.queries.GetYclientsUserToken(ctx, accountID)
if err != nil {
return nil, err
}
return &model.YclientsToken{
AccountID: row.Accountid,
SalonID: row.Salonid,
AccessToken: row.Accesstoken,
Active: row.Active,
Expiration: row.Expiration,
CreatedAt: row.Createdat,
}, err
}
// users
func (r *YclientsRepository) GetCurrentAccount(ctx context.Context, accountID string) (*model.YclientsAccount, error) {
row, err := r.queries.GetCurrentYclientsCompany(ctx, accountID)
if err != nil {
return nil, err
}
user := model.YclientsAccount{
ID: row.ID,
AccountID: row.Accountid,
SalonID: row.Salonid,
Name: row.Name,
Country: row.Country,
Deleted: row.Deleted,
CreatedAt: row.Createdat,
}
//_, err = r.queries.CheckExpiredYclientsToken(ctx, accountID)
//if err != nil {
// if err == sql.ErrNoRows {
// user.Stale = false
// return &user, nil
// }
// return nil, err
//}
user.Stale = true
return &user, nil
}
//func (r *YclientsRepository) SoftDeleteAccount(ctx context.Context, accountID string) error {
// err := r.queries.SoftDeleteYclientsAccount(ctx, accountID)
// if err != nil {
// return err
// }
// return nil
//}
func (r *YclientsRepository) GettingUserWithPagination(ctx context.Context, req *model.PaginationReq, accountID string) (*model.UserListYclientsResp, error) {
rows, err := r.queries.GetUsersYclientsWithPagination(ctx, sqlcgen.GetUsersYclientsWithPaginationParams{
Accountid: accountID,
Column2: req.Page,
Limit: req.Size,
})
if err != nil {
return nil, err
}
var users []model.YclientsAccountUser
var count int64
for _, row := range rows {
users = append(users, model.YclientsAccountUser{
ID: row.ID,
SalonID: row.Salonid,
YclientsUserID: row.Yclientsuserid,
Name: row.Name,
Role: row.Role,
Deleted: row.Deleted,
CreatedAt: row.Createdat,
})
count = row.TotalCount
}
resp := model.UserListYclientsResp{
Count: count,
Items: users,
}
return &resp, nil
}
// company
func (r *YclientsRepository) GettingCompanyWithPagination(ctx context.Context, req *model.PaginationReq, accountID string) (*model.CompanyListYclientsResp, error) {
rows, err := r.queries.GetCompanyYclientsWithPagination(ctx, sqlcgen.GetCompanyYclientsWithPaginationParams{
Accountid: accountID,
Column2: req.Page,
Limit: req.Size,
})
if err != nil {
return nil, err
}
var users []model.YclientsCompany
var count int64
for _, row := range rows {
users = append(users, model.YclientsCompany{
ID: row.ID,
SalonID: row.Salonid,
Title: row.Title,
ShortDecription: row.Shortdecription,
Active: row.Active,
Country: row.Country,
GroupPriority: row.Grouppriority,
Deleted: row.Deleted,
CreatedAt: row.Createdat,
})
count = row.TotalCount
}
resp := model.CompanyListYclientsResp{
Count: count,
Items: users,
}
return &resp, nil
}
// todo
func (r *YclientsRepository) UpdateCompany() {
}
// services
func (r *YclientsRepository) GettingServicesWithPagination(ctx context.Context, req *model.PaginationReq, accountID string) (*model.ServicesListYclientsResp, error) {
rows, err := r.queries.GetServicesYclientsWithPagination(ctx, sqlcgen.GetServicesYclientsWithPaginationParams{
Accountid: accountID,
Column2: req.Page,
Limit: req.Size,
})
if err != nil {
return nil, err
}
var users []model.YclientsServices
var count int64
for _, row := range rows {
users = append(users, model.YclientsServices{
ID: row.ID,
SalonID: row.Salonid,
ServiceID: row.Serviceid,
Title: row.Title,
CategoryID: row.Categoryid,
PriceMin: row.Pricemin,
PriceMax: row.Pricemax,
Discount: row.Discount,
Comment: row.Comment,
Active: row.Active,
ApiID: row.Apiid,
Deleted: row.Deleted,
CreatedAt: row.Createdat,
})
count = row.TotalCount
}
resp := model.ServicesListYclientsResp{
Count: count,
Items: users,
}
return &resp, nil
}
// todo
func (r *YclientsRepository) UpdateServices() {
}
// timeslots
func (r *YclientsRepository) GettingTimeslotsWithPagination(ctx context.Context, req *model.PaginationReq, accountID string) (*model.TimeslotsListYclientsResp, error) {
rows, err := r.queries.GetTimeslotsYclientsWithPagination(ctx, sqlcgen.GetTimeslotsYclientsWithPaginationParams{
Accountid: accountID,
Column2: req.Page,
Limit: req.Size,
})
if err != nil {
return nil, err
}
var users []model.Timeslots
var count int64
for _, row := range rows {
var weekdaysSettings []model.WeekdaySetting
err = json.Unmarshal(row.Weekdayssettings, &weekdaysSettings)
if err != nil {
return nil, err
}
var datesSettings model.DateSetting
err = json.Unmarshal(row.Datessettings, &datesSettings)
if err != nil {
return nil, err
}
users = append(users, model.Timeslots{
ID: row.ID,
SalonID: row.Salonid,
IsEnabled: row.Isenabled,
WeekdaysSettings: weekdaysSettings,
DatesSettings: datesSettings,
Deleted: row.Deleted,
CreatedAt: row.Createdat,
})
count = row.TotalCount
}
resp := model.TimeslotsListYclientsResp{
Count: count,
Items: users,
}
return &resp, nil
}
// todo
func (r *YclientsRepository) UpdateTimeslots() {
}