fix: returning whole tag object
This commit is contained in:
@ -63,6 +63,7 @@ func main() {
|
|||||||
linkModel := models.NewLinkModel(db)
|
linkModel := models.NewLinkModel(db)
|
||||||
tagModel := models.NewTagModel(db)
|
tagModel := models.NewTagModel(db)
|
||||||
textModel := models.NewTextModel(db)
|
textModel := models.NewTextModel(db)
|
||||||
|
userModel := models.NewUserModel(db)
|
||||||
|
|
||||||
listener := pq.NewListener(os.Getenv("DB_CONNECTION"), time.Second, time.Second, func(event pq.ListenerEventType, err error) {
|
listener := pq.NewListener(os.Getenv("DB_CONNECTION"), time.Second, time.Second, func(event pq.ListenerEventType, err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -149,7 +150,7 @@ func main() {
|
|||||||
w.Header().Add("Access-Control-Allow-Credentials", "*")
|
w.Header().Add("Access-Control-Allow-Credentials", "*")
|
||||||
w.Header().Add("Access-Control-Allow-Headers", "*")
|
w.Header().Add("Access-Control-Allow-Headers", "*")
|
||||||
|
|
||||||
images, err := imageModel.ListWithProperties(r.Context(), uuid.MustParse(userId))
|
images, err := userModel.ListWithProperties(r.Context(), uuid.MustParse(userId))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
|
@ -29,16 +29,6 @@ type ProcessingImageData struct {
|
|||||||
Image model.Image
|
Image model.Image
|
||||||
}
|
}
|
||||||
|
|
||||||
type ImageWithProperties struct {
|
|
||||||
ID uuid.UUID
|
|
||||||
|
|
||||||
Image model.Image
|
|
||||||
|
|
||||||
Tags []model.ImageTags
|
|
||||||
Links []model.ImageLinks
|
|
||||||
Text []model.ImageText
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m ImageModel) Process(ctx context.Context, userId uuid.UUID, image model.Image) (model.UserImagesToProcess, error) {
|
func (m ImageModel) Process(ctx context.Context, userId uuid.UUID, image model.Image) (model.UserImagesToProcess, error) {
|
||||||
tx, err := m.dbPool.BeginTx(ctx, nil)
|
tx, err := m.dbPool.BeginTx(ctx, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -153,28 +143,6 @@ func (m ImageModel) Get(ctx context.Context, imageId uuid.UUID) (ImageData, erro
|
|||||||
return images[0], err
|
return images[0], err
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: move this to `user.go` model file
|
|
||||||
func (m ImageModel) ListWithProperties(ctx context.Context, userId uuid.UUID) ([]ImageWithProperties, error) {
|
|
||||||
listWithPropertiesStmt := SELECT(
|
|
||||||
UserImages.ID.AS("ImageWithProperties.ID"),
|
|
||||||
Image.ID,
|
|
||||||
Image.ImageName,
|
|
||||||
ImageTags.AllColumns,
|
|
||||||
ImageText.AllColumns,
|
|
||||||
ImageLinks.AllColumns).
|
|
||||||
FROM(
|
|
||||||
UserImages.INNER_JOIN(Image, Image.ID.EQ(UserImages.ImageID)).
|
|
||||||
LEFT_JOIN(ImageTags, ImageTags.ImageID.EQ(UserImages.ID)).
|
|
||||||
LEFT_JOIN(ImageText, ImageText.ImageID.EQ(UserImages.ID)).
|
|
||||||
LEFT_JOIN(ImageLinks, ImageLinks.ImageID.EQ(UserImages.ID))).
|
|
||||||
WHERE(UserImages.UserID.EQ(UUID(userId)))
|
|
||||||
|
|
||||||
images := []ImageWithProperties{}
|
|
||||||
err := listWithPropertiesStmt.QueryContext(ctx, m.dbPool, &images)
|
|
||||||
|
|
||||||
return images, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewImageModel(db *sql.DB) ImageModel {
|
func NewImageModel(db *sql.DB) ImageModel {
|
||||||
return ImageModel{dbPool: db}
|
return ImageModel{dbPool: db}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"screenmark/screenmark/.gen/haystack/haystack/model"
|
"screenmark/screenmark/.gen/haystack/haystack/model"
|
||||||
. "screenmark/screenmark/.gen/haystack/haystack/table"
|
. "screenmark/screenmark/.gen/haystack/haystack/table"
|
||||||
|
|
||||||
@ -11,10 +12,23 @@ import (
|
|||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
type UserModek struct {
|
type UserModel struct {
|
||||||
dbPool *sql.DB
|
dbPool *sql.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ImageWithProperties struct {
|
||||||
|
ID uuid.UUID
|
||||||
|
|
||||||
|
Image model.Image
|
||||||
|
|
||||||
|
Tags []struct {
|
||||||
|
model.ImageTags
|
||||||
|
Tag model.UserTags
|
||||||
|
}
|
||||||
|
Links []model.ImageLinks
|
||||||
|
Text []model.ImageText
|
||||||
|
}
|
||||||
|
|
||||||
func getUserIdFromImage(ctx context.Context, dbPool *sql.DB, imageId uuid.UUID) (uuid.UUID, error) {
|
func getUserIdFromImage(ctx context.Context, dbPool *sql.DB, imageId uuid.UUID) (uuid.UUID, error) {
|
||||||
getUserIdStmt := UserImages.SELECT(UserImages.UserID).WHERE(UserImages.ID.EQ(UUID(imageId)))
|
getUserIdStmt := UserImages.SELECT(UserImages.UserID).WHERE(UserImages.ID.EQ(UUID(imageId)))
|
||||||
|
|
||||||
@ -30,3 +44,32 @@ func getUserIdFromImage(ctx context.Context, dbPool *sql.DB, imageId uuid.UUID)
|
|||||||
|
|
||||||
return user[0].ID, nil
|
return user[0].ID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m UserModel) ListWithProperties(ctx context.Context, userId uuid.UUID) ([]ImageWithProperties, error) {
|
||||||
|
listWithPropertiesStmt := SELECT(
|
||||||
|
UserImages.ID.AS("ImageWithProperties.ID"),
|
||||||
|
Image.ID,
|
||||||
|
Image.ImageName,
|
||||||
|
ImageTags.AllColumns,
|
||||||
|
UserTags.AllColumns,
|
||||||
|
ImageText.AllColumns,
|
||||||
|
ImageLinks.AllColumns).
|
||||||
|
FROM(
|
||||||
|
UserImages.INNER_JOIN(Image, Image.ID.EQ(UserImages.ImageID)).
|
||||||
|
LEFT_JOIN(ImageTags, ImageTags.ImageID.EQ(UserImages.ID)).
|
||||||
|
INNER_JOIN(UserTags, UserTags.ID.EQ(ImageTags.TagID)).
|
||||||
|
LEFT_JOIN(ImageText, ImageText.ImageID.EQ(UserImages.ID)).
|
||||||
|
LEFT_JOIN(ImageLinks, ImageLinks.ImageID.EQ(UserImages.ID))).
|
||||||
|
WHERE(UserImages.UserID.EQ(UUID(userId)))
|
||||||
|
|
||||||
|
fmt.Println(listWithPropertiesStmt.DebugSql())
|
||||||
|
|
||||||
|
images := []ImageWithProperties{}
|
||||||
|
err := listWithPropertiesStmt.QueryContext(ctx, m.dbPool, &images)
|
||||||
|
|
||||||
|
return images, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUserModel(db *sql.DB) UserModel {
|
||||||
|
return UserModel{dbPool: db}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user