From 5f7a18c210c98b1b63cb1d70fe23732caad139cd Mon Sep 17 00:00:00 2001 From: harold Date: Thu, 6 Mar 2025 21:20:17 +0500 Subject: [PATCH] add fix for widgt files --- internal/api/http/handlers/files/files.go | 1 + internal/model/interfaces.go | 3 ++- internal/model/models.go | 1 + internal/model/sql/model.go | 1 + internal/model/sql/query.go | 19 ++++++++++--------- internal/repository/file/file.go | 3 +++ internal/service/file/file.go | 2 ++ sql/init.sql | 1 + 8 files changed, 21 insertions(+), 10 deletions(-) diff --git a/internal/api/http/handlers/files/files.go b/internal/api/http/handlers/files/files.go index 2f88f8e..6a44987 100644 --- a/internal/api/http/handlers/files/files.go +++ b/internal/api/http/handlers/files/files.go @@ -45,6 +45,7 @@ func AddNewFile(fileService model.FileService) echo.HandlerFunc { ctx, *newFile, authData.AccountID, + "widget", ) if err != nil { slog.Error(err.Error()) diff --git a/internal/model/interfaces.go b/internal/model/interfaces.go index 05f6581..c14027a 100644 --- a/internal/model/interfaces.go +++ b/internal/model/interfaces.go @@ -162,7 +162,7 @@ type FileRepo interface { ctx context.Context, streamerID int, file multipart.FileHeader, - extension, fileType string, + extension, fileType, entity string, ) (string, error) GetByID(ctx context.Context, fileID string) ([]byte, string, error) WidgetsFiles(ctx context.Context, fileType string, streamerID int) ([]*DataFile, error) @@ -175,6 +175,7 @@ type FileService interface { ctx context.Context, file multipart.FileHeader, streamerID int, + entity string, ) (string, error) GetByID(ctx context.Context, fileID string) ([]byte, string, error) WidgetsFiles(ctx context.Context, fileType string, streamerID int) ([]*DataFile, error) diff --git a/internal/model/models.go b/internal/model/models.go index e8c9b90..1fc281d 100644 --- a/internal/model/models.go +++ b/internal/model/models.go @@ -14,6 +14,7 @@ type DataFile struct { CreatedAt time.Time `db:"created_at" json:"created_at"` Size float32 `db:"size" json:"size"` FileLink string `json:"file_link"` + Entity string `db:"entity"` } type GetWidgetDb struct { diff --git a/internal/model/sql/model.go b/internal/model/sql/model.go index 96b14c7..07ab0d8 100644 --- a/internal/model/sql/model.go +++ b/internal/model/sql/model.go @@ -26,6 +26,7 @@ CREATE TABLE IF NOT EXISTS files ( file_name VARCHAR(50) NOT NULL, extension VARCHAR(10) NOT NULL, streamer_id INTEGER NOT NULL, + entity VARCHAR(50) NOT NULL DEFAULT 'widget', created_at TIMESTAMP DEFAULT now() ) diff --git a/internal/model/sql/query.go b/internal/model/sql/query.go index 0f682f7..11b8246 100644 --- a/internal/model/sql/query.go +++ b/internal/model/sql/query.go @@ -127,19 +127,20 @@ var GetWidgetByName = `SELECT id FROM widgets WHERE ( var FileById = `SELECT file_name, streamer_id, file_type FROM files WHERE id = (@id);` var AudioFilesWidgets = ` -SELECT f.* -FROM files AS f -JOIN widgets AS w ON w.audio = f.id -WHERE f.streamer_id = (@streamer_id); +SELECT * +FROM files +WHERE streamer_id = @streamer_id + AND entity = @entity + AND file_type LIKE 'audio%'; ` var ImageFilesWidgets = ` -SELECT f.* -FROM files AS f -JOIN widgets AS w ON w.image = f.id -WHERE f.streamer_id = (@streamer_id); +SELECT * +FROM files +WHERE streamer_id = @streamer_id + AND entity = @entity + AND file_type LIKE 'image%'; ` - var UpdateWidget = ` UPDATE widgets SET diff --git a/internal/repository/file/file.go b/internal/repository/file/file.go index c5bf3c6..52f8bef 100644 --- a/internal/repository/file/file.go +++ b/internal/repository/file/file.go @@ -32,6 +32,7 @@ func (fileRepo *RepoFile) AddNew( streamerID int, file multipart.FileHeader, extension, fileType string, + entity string, ) (string, error) { fileName, err := fileRepo.storage.Upload(&file, streamerID) if err != nil { @@ -45,6 +46,7 @@ func (fileRepo *RepoFile) AddNew( "file_type": fileType, "extension": extension, "size": sizeInKB, + "entity": entity, } fileIDRaw, err := fileRepo.db.Insert(ctx, sql.AddNewFile, args) @@ -98,6 +100,7 @@ func (fileRepo *RepoFile) WidgetsFiles( ) ([]*model.DataFile, error) { args := pgx.NamedArgs{ "streamer_id": streamerID, + "entity": "widget", } var stmt string diff --git a/internal/service/file/file.go b/internal/service/file/file.go index 9ad714c..e2274d3 100644 --- a/internal/service/file/file.go +++ b/internal/service/file/file.go @@ -37,6 +37,7 @@ func (fileService *ServiceFile) AddNewFile( ctx context.Context, file multipart.FileHeader, streamerID int, + entity string, ) (string, error) { fileExt := path.Ext(file.Filename) mimeType := mime.TypeByExtension(fileExt) @@ -50,6 +51,7 @@ func (fileService *ServiceFile) AddNewFile( file, fileExt, mimeType, + entity, ) if err != nil { return "", err diff --git a/sql/init.sql b/sql/init.sql index 2359a07..da07ece 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -8,6 +8,7 @@ CREATE TABLE IF NOT EXISTS files ( file_name VARCHAR(50) NOT NULL, extension VARCHAR(10) NOT NULL, streamer_id INTEGER NOT NULL, + entity VARCHAR(50) NOT NULL DEFAULT 'widget', created_at TIMESTAMP DEFAULT now() ); CREATE TABLE IF NOT EXISTS widgets (