From 711b1ad5d1c9a18fdefe407240f8f01215b0fba3 Mon Sep 17 00:00:00 2001 From: Nikolai Papin Date: Wed, 13 Aug 2025 21:22:18 +0300 Subject: [PATCH] feat: mapper function for wishlist dto; refactor: made database fields for wishlist object not null --- backend/internal/database/models.go | 6 ++-- backend/internal/database/query.sql.go | 12 ++++--- .../internal/utils/mapSpecial/wishListDto.go | 35 +++++++++++++++++++ sqlc/schema.sql | 6 ++-- 4 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 backend/internal/utils/mapSpecial/wishListDto.go diff --git a/backend/internal/database/models.go b/backend/internal/database/models.go index 3acf1d7..11cf4e7 100644 --- a/backend/internal/database/models.go +++ b/backend/internal/database/models.go @@ -104,8 +104,8 @@ type WishList struct { ProfileID int64 Hidden bool Name string - IconName *string - Color *string - ColorGrad *string + IconName string + Color string + ColorGrad string Deleted bool } diff --git a/backend/internal/database/query.sql.go b/backend/internal/database/query.sql.go index 272a07f..45c75a3 100644 --- a/backend/internal/database/query.sql.go +++ b/backend/internal/database/query.sql.go @@ -836,7 +836,7 @@ WHERE FROM banned_users WHERE user_id = users.id AND pardoned IS FALSE AND - (expires_at IS NULL OR expires_at < CURRENT_TIMESTAMP) + (expires_at IS NULL OR expires_at > CURRENT_TIMESTAMP) ) AND -- Not banned linfo.password_hash = crypt($2::text, linfo.password_hash) ` @@ -975,9 +975,9 @@ type GetWishlistsByUsernameWithPrivacyRow struct { ProfileID int64 Hidden bool Name string - IconName *string - Color *string - ColorGrad *string + IconName string + Color string + ColorGrad string Deleted bool AccessAllowed bool } @@ -1280,7 +1280,9 @@ func (q *Queries) UpdateUser(ctx context.Context, arg UpdateUserParams) error { const updateUserByUsername = `-- name: UpdateUserByUsername :exec UPDATE users -SET verified = $2, deleted = $3 +SET + verified = COALESCE($2, verified), + deleted = COALESCE($3, deleted) WHERE username = $1 ` diff --git a/backend/internal/utils/mapSpecial/wishListDto.go b/backend/internal/utils/mapSpecial/wishListDto.go new file mode 100644 index 0000000..b6db494 --- /dev/null +++ b/backend/internal/utils/mapSpecial/wishListDto.go @@ -0,0 +1,35 @@ +// 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 . + +package mapspecial + +import ( + "easywish/internal/database" + "easywish/internal/dto" + + "github.com/rafiulgits/go-automapper" +) + +func MapWishListDto(dbModel database.WishList, dtoModel *dto.WishListDto) { + if dtoModel == nil { + dtoModel = &dto.WishListDto{} + } + automapper.Map(&dbModel, dtoModel, func(src *database.WishList, dst *dto.WishListDto) { + dst.Guid = src.Guid.String() + }) +} + diff --git a/sqlc/schema.sql b/sqlc/schema.sql index 6648e11..522ea30 100644 --- a/sqlc/schema.sql +++ b/sqlc/schema.sql @@ -101,9 +101,9 @@ CREATE TABLE IF NOT EXISTS "wish_lists" ( profile_id BIGINT UNIQUE NOT NULL REFERENCES profiles(id) ON DELETE CASCADE, hidden BOOLEAN NOT NULL DEFAULT FALSE, name VARCHAR(32) NOT NULL DEFAULT 'Wishes', - icon_name VARCHAR(64), - color VARCHAR(7), - color_grad VARCHAR(7), + icon_name VARCHAR(64) NOT NULL DEFAULT '', + color VARCHAR(7) NOT NULL DEFAULT '', + color_grad VARCHAR(7) NOT NULL DEFAULT '', deleted BOOLEAN NOT NULL DEFAULT FALSE );