Add login and register dialogs, user dropdown menu with profile link and logout option, and integrate with session management hook. Prevent hydration mismatches by conditionally rendering auth elements after mount. Update package-lock.json with new @esbuild dependencies for build tooling.
55 lines
1.9 KiB
PL/PgSQL
55 lines
1.9 KiB
PL/PgSQL
-- Migration 004: Tabela de anúncios (listings) do marketplace
|
|
-- Criado em: 2025-01-27
|
|
|
|
-- Tabela de anúncios
|
|
CREATE TABLE IF NOT EXISTS listings (
|
|
listing_id SERIAL PRIMARY KEY,
|
|
seller_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
|
|
item_id INTEGER NOT NULL, -- referência ao banco de itens do TibiaWiki
|
|
item_name VARCHAR(255) NOT NULL,
|
|
quantity INTEGER DEFAULT 1 CHECK (quantity > 0),
|
|
server_name VARCHAR(50) NOT NULL,
|
|
|
|
-- Preços aceitos
|
|
price_pix DECIMAL(10, 2),
|
|
price_tibia_coins INTEGER,
|
|
price_gold_coins BIGINT,
|
|
|
|
-- Leilão
|
|
is_auction BOOLEAN DEFAULT FALSE,
|
|
current_bid_amount DECIMAL(10, 2),
|
|
current_bidder_id INTEGER REFERENCES users(user_id),
|
|
auction_ends_at TIMESTAMP,
|
|
|
|
-- Metadados
|
|
description TEXT,
|
|
listing_status VARCHAR(20) DEFAULT 'active' CHECK (listing_status IN ('active', 'sold', 'cancelled', 'in_escrow', 'expired')),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
sold_at TIMESTAMP,
|
|
views_count INTEGER DEFAULT 0
|
|
);
|
|
|
|
-- Índices para performance
|
|
CREATE INDEX IF NOT EXISTS idx_listings_status ON listings(listing_status);
|
|
CREATE INDEX IF NOT EXISTS idx_listings_item_id ON listings(item_id);
|
|
CREATE INDEX IF NOT EXISTS idx_listings_seller_id ON listings(seller_id);
|
|
CREATE INDEX IF NOT EXISTS idx_listings_server ON listings(server_name);
|
|
CREATE INDEX IF NOT EXISTS idx_listings_created_at ON listings(created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_listings_auction ON listings(is_auction, auction_ends_at) WHERE is_auction = TRUE;
|
|
|
|
-- Trigger para atualizar updated_at automaticamente
|
|
CREATE OR REPLACE FUNCTION update_listings_updated_at()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER trigger_update_listings_updated_at
|
|
BEFORE UPDATE ON listings
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_listings_updated_at();
|
|
|