From e7564ec452ddc539c614b24df23a344fc7fa26bc Mon Sep 17 00:00:00 2001 From: mpsalunggg Date: Fri, 9 Jan 2026 09:19:55 +0700 Subject: [PATCH 1/2] feat: adjust response detail order --- app/transaction_events/usecase/usecase.go | 6 ++++++ .../20251028150631_table_registration_events.sql | 8 ++++---- .../20260108131316_table_drop_testing_tables.sql | 11 +++++++++++ domain/transaction_events.go | 3 +++ makefile | 10 +++++++++- 5 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 database/migration/20260108131316_table_drop_testing_tables.sql diff --git a/app/transaction_events/usecase/usecase.go b/app/transaction_events/usecase/usecase.go index 2ee16eb..c6a230f 100644 --- a/app/transaction_events/usecase/usecase.go +++ b/app/transaction_events/usecase/usecase.go @@ -414,11 +414,16 @@ func (u *usecase) GetOrderDetail(ctx context.Context, orderNo string) (domain.Ge paymentDate = ®istration.PaymentDate.Time } + baseURL := u.cfg.BaseURL + imageURL := fmt.Sprintf("%s/api/v1/public/storage/images/%s", baseURL, event.Image) + response := domain.GetOrderDetailResponse{ OrderNo: registration.OrderNo, TransactionNo: transactionNo, PaymentDate: paymentDate, Status: registration.Status, + PaymentURL: *transaction.InvoiceURL, + CreatedAt: transaction.CreatedAt, EventDetail: domain.OrderEventDetail{ Title: event.Title, Date: eventDate, @@ -427,6 +432,7 @@ func (u *usecase) GetOrderDetail(ctx context.Context, orderNo string) (domain.Ge Duration: event.Duration, Price: event.Price, SessionType: event.SessionType, + Image: imageURL, }, UserDetail: domain.OrderUserDetail{ Fullname: registration.User.Fullname, diff --git a/database/migration/20251028150631_table_registration_events.sql b/database/migration/20251028150631_table_registration_events.sql index ff75066..6a27532 100644 --- a/database/migration/20251028150631_table_registration_events.sql +++ b/database/migration/20251028150631_table_registration_events.sql @@ -23,10 +23,10 @@ CREATE TABLE IF NOT EXISTS "public"."transaction_events" ( ); -- Create indexes for performance -CREATE INDEX idx_trx_no ON transaction_events(transaction_no); -CREATE INDEX idx_trx_registration ON transaction_events(registration_id); -CREATE INDEX idx_trx_status ON transaction_events(status); -CREATE INDEX idx_trx_external_id ON transaction_events(external_id); +CREATE INDEX IF NOT EXISTS idx_trx_no ON transaction_events(transaction_no); +CREATE INDEX IF NOT EXISTS idx_trx_registration ON transaction_events(registration_id); +CREATE INDEX IF NOT EXISTS idx_trx_status ON transaction_events(status); +CREATE INDEX IF NOT EXISTS idx_trx_external_id ON transaction_events(external_id); COMMENT ON TABLE "public"."transaction_events" IS 'Payment transactions for event registrations'; COMMENT ON COLUMN "public"."transaction_events"."status" IS 'pending, paid, expired'; diff --git a/database/migration/20260108131316_table_drop_testing_tables.sql b/database/migration/20260108131316_table_drop_testing_tables.sql new file mode 100644 index 0000000..0d12071 --- /dev/null +++ b/database/migration/20260108131316_table_drop_testing_tables.sql @@ -0,0 +1,11 @@ +-- +goose Up +-- +goose StatementBegin +DROP TABLE IF EXISTS "public"."testing_transaction"; +DROP TABLE IF EXISTS "public"."testing"; +DROP SEQUENCE IF EXISTS testing_id_seq; +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +-- Recreate if needed for rollback (optional) +-- +goose StatementEnd \ No newline at end of file diff --git a/domain/transaction_events.go b/domain/transaction_events.go index 9580120..62af3df 100644 --- a/domain/transaction_events.go +++ b/domain/transaction_events.go @@ -53,6 +53,8 @@ type GetOrderDetailResponse struct { TransactionNo string `json:"transaction_no"` PaymentDate *time.Time `json:"payment_date"` Status string `json:"status"` + PaymentURL string `json:"payment_url"` + CreatedAt time.Time `json:"created_at"` EventDetail OrderEventDetail `json:"event_detail"` UserDetail OrderUserDetail `json:"user_detail"` } @@ -65,6 +67,7 @@ type OrderEventDetail struct { Duration string `json:"duration"` Price float64 `json:"price"` SessionType string `json:"session_type"` + Image string `json:"image"` } type OrderUserDetail struct { diff --git a/makefile b/makefile index f6f3122..dbed8fb 100644 --- a/makefile +++ b/makefile @@ -2,6 +2,14 @@ serve-http: @go run main.go http migrate: @go run main.go migrate +migrate-up: + @go run main.go migrate:up +migrate-down: + @go run main.go migrate:down +migrate-create: + @go run main.go migrate:create +migrate-fresh: + @go run main.go migrate:fresh .PHONY: run -run: +run: @swag init --parseDependency -g main.go && air http From b9833fc6f211ecf15c5368a57cdfa6acda147b04 Mon Sep 17 00:00:00 2001 From: mpsalunggg Date: Mon, 12 Jan 2026 20:47:29 +0700 Subject: [PATCH 2/2] refactor: inline imageURL construction --- app/transaction_events/usecase/usecase.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/transaction_events/usecase/usecase.go b/app/transaction_events/usecase/usecase.go index c6a230f..83b5195 100644 --- a/app/transaction_events/usecase/usecase.go +++ b/app/transaction_events/usecase/usecase.go @@ -414,8 +414,7 @@ func (u *usecase) GetOrderDetail(ctx context.Context, orderNo string) (domain.Ge paymentDate = ®istration.PaymentDate.Time } - baseURL := u.cfg.BaseURL - imageURL := fmt.Sprintf("%s/api/v1/public/storage/images/%s", baseURL, event.Image) + imageURL := fmt.Sprintf("%s/api/v1/public/storage/images/%s", u.cfg.BaseURL, event.Image) response := domain.GetOrderDetailResponse{ OrderNo: registration.OrderNo,