From 6d693db605c2bad75ee35f355d30a3ee8f516b45 Mon Sep 17 00:00:00 2001 From: KoCoder Date: Wed, 3 Jun 2026 00:02:43 +0200 Subject: [PATCH] Move all tables into a schema --- internal/database/click_log.sql.go | 14 +++++------ internal/database/models.go | 4 ++-- internal/database/urls.sql.go | 28 +++++++++++----------- sql/queries/click_log.sql | 4 ++-- sql/queries/urls.sql | 10 ++++---- sql/schema/001_create_url_table.sql | 8 ++++--- sql/schema/002_create_click_logs_table.sql | 6 ++--- 7 files changed, 38 insertions(+), 36 deletions(-) diff --git a/internal/database/click_log.sql.go b/internal/database/click_log.sql.go index 56fc7c9..db35261 100644 --- a/internal/database/click_log.sql.go +++ b/internal/database/click_log.sql.go @@ -11,18 +11,18 @@ import ( ) const getClicks = `-- name: GetClicks :many -SELECT click_id, url_id, clicked_at, referrer, user_agent, ip_address FROM click_logs +SELECT click_id, url_id, clicked_at, referrer, user_agent, ip_address FROM lss.click_logs ` -func (q *Queries) GetClicks(ctx context.Context) ([]ClickLog, error) { +func (q *Queries) GetClicks(ctx context.Context) ([]LssClickLog, error) { rows, err := q.db.QueryContext(ctx, getClicks) if err != nil { return nil, err } defer rows.Close() - var items []ClickLog + var items []LssClickLog for rows.Next() { - var i ClickLog + var i LssClickLog if err := rows.Scan( &i.ClickID, &i.UrlID, @@ -45,7 +45,7 @@ func (q *Queries) GetClicks(ctx context.Context) ([]ClickLog, error) { } const trackClick = `-- name: TrackClick :one -INSERT INTO click_logs (url_id, referrer, user_agent, ip_address) +INSERT INTO lss.click_logs (url_id, referrer, user_agent, ip_address) VALUES ( $1, $2, @@ -62,14 +62,14 @@ type TrackClickParams struct { IpAddress sql.NullString } -func (q *Queries) TrackClick(ctx context.Context, arg TrackClickParams) (ClickLog, error) { +func (q *Queries) TrackClick(ctx context.Context, arg TrackClickParams) (LssClickLog, error) { row := q.db.QueryRowContext(ctx, trackClick, arg.UrlID, arg.Referrer, arg.UserAgent, arg.IpAddress, ) - var i ClickLog + var i LssClickLog err := row.Scan( &i.ClickID, &i.UrlID, diff --git a/internal/database/models.go b/internal/database/models.go index 7ba9ba9..74ed792 100644 --- a/internal/database/models.go +++ b/internal/database/models.go @@ -9,7 +9,7 @@ import ( "time" ) -type ClickLog struct { +type LssClickLog struct { ClickID int64 UrlID int32 ClickedAt time.Time @@ -18,7 +18,7 @@ type ClickLog struct { IpAddress sql.NullString } -type Url struct { +type LssUrl struct { UrlID int32 LongUrl string ShortCode string diff --git a/internal/database/urls.sql.go b/internal/database/urls.sql.go index d1ca403..feec747 100644 --- a/internal/database/urls.sql.go +++ b/internal/database/urls.sql.go @@ -12,7 +12,7 @@ import ( ) const createURL = `-- name: CreateURL :one -INSERT INTO urls (created_at, expires_at, long_url, short_code, is_active) +INSERT INTO lss.urls (created_at, expires_at, long_url, short_code, is_active) VALUES ( $1, $2, @@ -31,7 +31,7 @@ type CreateURLParams struct { IsActive bool } -func (q *Queries) CreateURL(ctx context.Context, arg CreateURLParams) (Url, error) { +func (q *Queries) CreateURL(ctx context.Context, arg CreateURLParams) (LssUrl, error) { row := q.db.QueryRowContext(ctx, createURL, arg.CreatedAt, arg.ExpiresAt, @@ -39,7 +39,7 @@ func (q *Queries) CreateURL(ctx context.Context, arg CreateURLParams) (Url, erro arg.ShortCode, arg.IsActive, ) - var i Url + var i LssUrl err := row.Scan( &i.UrlID, &i.LongUrl, @@ -52,12 +52,12 @@ func (q *Queries) CreateURL(ctx context.Context, arg CreateURLParams) (Url, erro } const deleteURL = `-- name: DeleteURL :one -DELETE FROM urls WHERE url_id = $1 RETURNING url_id, long_url, short_code, created_at, expires_at, is_active +DELETE FROM lss.urls WHERE url_id = $1 RETURNING url_id, long_url, short_code, created_at, expires_at, is_active ` -func (q *Queries) DeleteURL(ctx context.Context, urlID int32) (Url, error) { +func (q *Queries) DeleteURL(ctx context.Context, urlID int32) (LssUrl, error) { row := q.db.QueryRowContext(ctx, deleteURL, urlID) - var i Url + var i LssUrl err := row.Scan( &i.UrlID, &i.LongUrl, @@ -70,7 +70,7 @@ func (q *Queries) DeleteURL(ctx context.Context, urlID int32) (Url, error) { } const getURLByShortCode = `-- name: GetURLByShortCode :one -SELECT url_id, long_url FROM urls WHERE is_active = true AND short_code = $1 +SELECT url_id, long_url FROM lss.urls WHERE is_active = true AND short_code = $1 ` type GetURLByShortCodeRow struct { @@ -86,18 +86,18 @@ func (q *Queries) GetURLByShortCode(ctx context.Context, shortCode string) (GetU } const getURLs = `-- name: GetURLs :many -SELECT url_id, long_url, short_code, created_at, expires_at, is_active FROM urls +SELECT url_id, long_url, short_code, created_at, expires_at, is_active FROM lss.urls ` -func (q *Queries) GetURLs(ctx context.Context) ([]Url, error) { +func (q *Queries) GetURLs(ctx context.Context) ([]LssUrl, error) { rows, err := q.db.QueryContext(ctx, getURLs) if err != nil { return nil, err } defer rows.Close() - var items []Url + var items []LssUrl for rows.Next() { - var i Url + var i LssUrl if err := rows.Scan( &i.UrlID, &i.LongUrl, @@ -120,7 +120,7 @@ func (q *Queries) GetURLs(ctx context.Context) ([]Url, error) { } const setActive = `-- name: SetActive :one -UPDATE urls SET is_active = $1 WHERE url_id = $2 RETURNING url_id, long_url, short_code, created_at, expires_at, is_active +UPDATE lss.urls SET is_active = $1 WHERE url_id = $2 RETURNING url_id, long_url, short_code, created_at, expires_at, is_active ` type SetActiveParams struct { @@ -128,9 +128,9 @@ type SetActiveParams struct { UrlID int32 } -func (q *Queries) SetActive(ctx context.Context, arg SetActiveParams) (Url, error) { +func (q *Queries) SetActive(ctx context.Context, arg SetActiveParams) (LssUrl, error) { row := q.db.QueryRowContext(ctx, setActive, arg.IsActive, arg.UrlID) - var i Url + var i LssUrl err := row.Scan( &i.UrlID, &i.LongUrl, diff --git a/sql/queries/click_log.sql b/sql/queries/click_log.sql index 3981632..7e201a4 100644 --- a/sql/queries/click_log.sql +++ b/sql/queries/click_log.sql @@ -1,5 +1,5 @@ -- name: TrackClick :one -INSERT INTO click_logs (url_id, referrer, user_agent, ip_address) +INSERT INTO lss.click_logs (url_id, referrer, user_agent, ip_address) VALUES ( $1, $2, @@ -9,4 +9,4 @@ VALUES ( RETURNING *; -- name: GetClicks :many -SELECT * FROM click_logs; \ No newline at end of file +SELECT * FROM lss.click_logs; \ No newline at end of file diff --git a/sql/queries/urls.sql b/sql/queries/urls.sql index e93f714..0b4f746 100644 --- a/sql/queries/urls.sql +++ b/sql/queries/urls.sql @@ -1,5 +1,5 @@ -- name: CreateURL :one -INSERT INTO urls (created_at, expires_at, long_url, short_code, is_active) +INSERT INTO lss.urls (created_at, expires_at, long_url, short_code, is_active) VALUES ( $1, $2, @@ -10,13 +10,13 @@ VALUES ( RETURNING *; -- name: GetURLs :many -SELECT * FROM urls; +SELECT * FROM lss.urls; -- name: GetURLByShortCode :one -SELECT url_id, long_url FROM urls WHERE is_active = true AND short_code = $1; +SELECT url_id, long_url FROM lss.urls WHERE is_active = true AND short_code = $1; -- name: SetActive :one -UPDATE urls SET is_active = $1 WHERE url_id = $2 RETURNING *; +UPDATE lss.urls SET is_active = $1 WHERE url_id = $2 RETURNING *; -- name: DeleteURL :one -DELETE FROM urls WHERE url_id = $1 RETURNING *; \ No newline at end of file +DELETE FROM lss.urls WHERE url_id = $1 RETURNING *; \ No newline at end of file diff --git a/sql/schema/001_create_url_table.sql b/sql/schema/001_create_url_table.sql index ed01f29..79b57e6 100644 --- a/sql/schema/001_create_url_table.sql +++ b/sql/schema/001_create_url_table.sql @@ -1,5 +1,7 @@ -- +goose Up -CREATE TABLE urls ( +CREATE SCHEMA IF NOT EXISTS lss; + +CREATE TABLE lss.urls ( url_id SERIAL PRIMARY KEY, long_url TEXT NOT NULL, short_code VARCHAR(10) UNIQUE NOT NULL, @@ -9,8 +11,8 @@ CREATE TABLE urls ( ); -- Crucial index for lightning-fast lookups when redirecting -CREATE INDEX idx_urls_short_code ON urls(short_code); +CREATE INDEX idx_urls_short_code ON lss.urls(short_code); -- +goose Down DROP INDEX idx_urls_short_code; -DROP TABLE urls; \ No newline at end of file +DROP TABLE lss.urls; \ No newline at end of file diff --git a/sql/schema/002_create_click_logs_table.sql b/sql/schema/002_create_click_logs_table.sql index 0fa0b88..1e6c81e 100644 --- a/sql/schema/002_create_click_logs_table.sql +++ b/sql/schema/002_create_click_logs_table.sql @@ -1,5 +1,5 @@ -- +goose Up -CREATE TABLE click_logs ( +CREATE TABLE lss.click_logs ( click_id BIGSERIAL PRIMARY KEY, url_id INT NOT NULL REFERENCES urls(url_id) ON DELETE CASCADE, clicked_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, @@ -9,8 +9,8 @@ CREATE TABLE click_logs ( ); -- Index to optimize analytics queries for a specific link -CREATE INDEX idx_click_logs_url_id ON click_logs(url_id); +CREATE INDEX idx_click_logs_url_id ON lss.click_logs(url_id); -- +goose Down DROP INDEX idx_click_logs_url_id; -DROP TABLE click_logs; \ No newline at end of file +DROP TABLE lss.click_logs; \ No newline at end of file