Интернет-магазин: Go, PostgreSQL 17 SSL, Caddy, Docker Compose

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
shop
2026-05-16 17:09:27 +03:00
commit 448cf2a465
21 changed files with 1208 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
CREATE TABLE IF NOT EXISTS products (
id SERIAL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
description TEXT NOT NULL DEFAULT '',
price NUMERIC(10, 2) NOT NULL CHECK (price >= 0),
image_url TEXT NOT NULL DEFAULT '',
category VARCHAR(100) NOT NULL DEFAULT 'Разное',
featured BOOLEAN NOT NULL DEFAULT false,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_products_featured ON products (featured) WHERE featured = true;
CREATE INDEX IF NOT EXISTS idx_products_category ON products (category);
INSERT INTO products (name, description, price, image_url, category, featured) VALUES
('Куртка Urban Shell', 'Лёгкая ветровка с водоотталкивающим покрытием.', 8990.00, 'https://images.unsplash.com/photo-1544022613-e87ca75a784a?w=600&q=80', 'Одежда', true),
('Кроссовки Nova Run', 'Амортизация для бега и повседневной носки.', 7490.00, 'https://images.unsplash.com/photo-1542291026-7eec264c27ff?w=600&q=80', 'Обувь', true),
('Рюкзак City Pack', 'Отделение для ноутбука 15" и USB-порт.', 4590.00, 'https://images.unsplash.com/photo-1553062407-98eeb64c6a62?w=600&q=80', 'Аксессуары', true),
('Часы Minimal Steel', 'Корпус из нержавеющей стали, сапфировое стекло.', 12990.00, 'https://images.unsplash.com/photo-1523275335684-37898b6baf30?w=600&q=80', 'Аксессуары', true),
('Худи Soft Loop', 'Хлопок премиум, уютная посадка.', 3990.00, 'https://images.unsplash.com/photo-1556821840-3a63f95609a7?w=600&q=80', 'Одежда', true),
('Наушники Air Tone', 'Активное шумоподавление, 30 ч автономности.', 9990.00, 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=600&q=80', 'Электроника', true),
('Футболка Essential', 'Базовая модель из органического хлопка.', 1990.00, 'https://images.unsplash.com/photo-1521572163474-6864f9cf17ab?w=600&q=80', 'Одежда', false),
('Кеды Classic Low', 'Кожаный верх, резиновая подошва.', 5490.00, 'https://images.unsplash.com/photo-1460353581641-37baddab0fa2?w=600&q=80', 'Обувь', true);
+26
View File
@@ -0,0 +1,26 @@
#!/bin/sh
set -e
DIR="${1:-/certs}"
CRT="$DIR/server.crt"
KEY="$DIR/server.key"
if [ -f "$CRT" ] && [ -f "$KEY" ]; then
echo "SSL certificates already exist in $DIR"
exit 0
fi
mkdir -p "$DIR"
openssl req -new -x509 -days 825 -nodes -text \
-out "$CRT" \
-keyout "$KEY" \
-subj "/CN=postgres.shop.local"
chmod 600 "$KEY"
chmod 644 "$CRT"
# postgres image runs as uid 999
chown 999:999 "$KEY" "$CRT" 2>/dev/null || true
echo "Generated PostgreSQL SSL certificates in $DIR"