2025-03-05 13:10:55 +05:00

231 lines
4.9 KiB
Go

package widget
import (
"context"
"donat-widget/internal/model"
"donat-widget/internal/model/sql"
"github.com/jackc/pgx/v5"
"log/slog"
)
func New(
db model.Db,
storage model.Storage,
) *RepoWidget {
return &RepoWidget{
db: db,
storage: storage,
}
}
type RepoWidget struct {
db model.Db
storage model.Storage
}
func (widgetRepo *RepoWidget) CreateWidget(
ctx context.Context,
streamerID int,
templateID int,
duration int,
minAmount int,
maxAmount int,
image string,
audio string,
name string,
) (model.WidgetID, error) {
args := pgx.NamedArgs{
"streamer_id": streamerID,
"template_id": templateID,
"duration": duration,
"min_amount": minAmount,
"max_amount": maxAmount,
"image": image,
"audio": audio,
"name": name,
}
widgetID, err := widgetRepo.db.Insert(ctx, sql.CreateWidget, args)
if err != nil {
slog.Error(err.Error())
return 0, err
}
return model.WidgetID(widgetID.(int)), nil
}
//
//func (widgetRepo *RepoWidget) GetWidgetByStreamerID(
// ctx context.Context,
// streamerID model.StreamerID,
//) ([]*model.Widget, error) {
// args := pgx.NamedArgs{"streamer_id": streamerID}
// rows, err := widgetRepo.db.Select(ctx, sql.GetWidgetByStreamerID, args)
// if err != nil {
// slog.Error(err.Error())
// return nil, err
// }
//
// var widgets []*model.Widget
// err = pgxscan.ScanAll(&widgets, rows)
// if err != nil {
// slog.Error(err.Error())
// return nil, err
// }
//
// return widgets, nil
//}
//
//func (widgetRepo *RepoWidget) GetWidgetByID(
// ctx context.Context,
// widgetID model.WidgetID,
//) ([]*model.Widget, error) {
// args := pgx.NamedArgs{"id": widgetID}
// rows, err := widgetRepo.db.Select(ctx, sql.GetWidgetByID, args)
// if err != nil {
// slog.Error(err.Error())
// return nil, err
// }
//
// var widgets []*model.Widget
// err = pgxscan.ScanAll(&widgets, rows)
// if err != nil {
// slog.Error(err.Error())
// return nil, err
// }
//
// return widgets, nil
//}
//
//func (widgetRepo *RepoWidget) GetAllWidget(
// ctx context.Context,
// streamerID model.StreamerID,
//) ([]*model.Widget, error) {
// args := pgx.NamedArgs{
// "streamer_id": streamerID,
// }
// rows, err := widgetRepo.db.Select(ctx, sql.GetAllWidget, args)
// if err != nil {
// slog.Error(err.Error())
// return nil, err
// }
//
// var widgets []*model.Widget
// err = pgxscan.ScanAll(&widgets, rows)
// if err != nil {
// slog.Error(err.Error())
// return nil, err
// }
//
// return widgets, nil
//}
//
//func (widgetRepo *RepoWidget) SetMediaFile(
// file model.UploadFile,
// filename string,
// size int64,
// collection string,
//) (model.FileID, error) {
// fileID, err := widgetRepo.storage.Upload(file, filename, size, collection)
// if err != nil {
// slog.Error(err.Error())
// return "", err
// }
//
// return fileID, nil
//}
//
//func (widgetRepo *RepoWidget) GetMediaFile(
// fileID model.FileID,
//) (model.DownloadFile, error) {
// file, err := widgetRepo.storage.Download(fileID)
// if err != nil {
// slog.Error(err.Error())
// return nil, err
// }
//
// return file, err
//}
//
//func (widgetRepo *RepoWidget) UpdateMediaFile(
// ctx context.Context,
// widgetID model.WidgetID,
// file model.UploadFile,
// fileID model.FileID,
// filename string,
// size int64,
// collection string,
// mediaType model.MediaType,
//) error {
// err := widgetRepo.storage.Update(file, fileID, filename, size, collection)
// if err != nil {
// slog.Error(err.Error())
// return err
// }
//
// mediaType = mediaType + "_url"
// args := pgx.NamedArgs{
// string(mediaType): model.MediaUrl(fileID),
// "id": widgetID,
// }
// err = widgetRepo.db.Update(ctx, sql.UpdateMediaUrl(mediaType), args)
// if err != nil {
// slog.Error(err.Error())
// return err
// }
//
// return nil
//}
//
//func (widgetRepo *RepoWidget) SetMediaUrl(
// ctx context.Context,
// widgetID model.WidgetID,
// mediaUrl model.MediaUrl,
// mediaType model.MediaType,
//) error {
// mediaType = mediaType + "_url"
//
// args := pgx.NamedArgs{
// string(mediaType): mediaUrl,
// "id": widgetID,
// }
// err := widgetRepo.db.Update(ctx, sql.UpdateMediaUrl(mediaType), args)
// if err != nil {
// slog.Error(err.Error())
// return err
// }
// return nil
//}
//
//func (widgetRepo *RepoWidget) GetMediaUrl(
// ctx context.Context,
// widgetID model.WidgetID,
// mediaType model.MediaType,
//) (model.MediaUrl, error) {
// mediaType = mediaType + "_url"
// args := pgx.NamedArgs{
// "id": widgetID,
// }
// rows, err := widgetRepo.db.Select(ctx, sql.GetMediaUrl(mediaType), args)
// if err != nil {
// slog.Error(err.Error())
// return "", err
// }
//
// var widgets []*model.Widget
// err = pgxscan.ScanAll(&widgets, rows)
// if err != nil {
// slog.Error(err.Error())
// return "", err
// }
//
// if len(widgets) == 0 {
// slog.Error("Widget does not exist")
// return "", errors.New("widget does not exist")
// }
//
// widget := widgets[0]
// mediaUrl := widget.GetMediaUrl(mediaType)
//
// return mediaUrl, nil
//}