Spaces:
Running
Running
Neon PostgreSQL Kurulumu
Bu proje kullanici hesaplarini ve kota sayaclarini DATABASE_URL ile baglanilan veritabaninda saklar.
1. Neon'da Veritabani Ac
- Neon dashboard'da yeni bir project olustur.
Connection stringalanindan PostgreSQL URL'sini kopyala.- URL'nin sonunda
sslmode=requireoldugundan emin ol.
Ornek format:
DATABASE_URL=postgresql://USER:PASSWORD@HOST.neon.tech/DB?sslmode=require
Kod bu URL'yi otomatik olarak SQLAlchemy'nin postgresql+psycopg:// surucusune cevirir.
2. .env Ayari
.env dosyasinda su alanlari doldur:
DATABASE_URL=postgresql://USER:PASSWORD@HOST.neon.tech/DB?sslmode=require
FLASK_SECRET_KEY=uzun-rastgele-bir-deger
GOOGLE_CLIENT_ID=google-web-client-id
ADMIN_EMAILS=admin@example.com
FLASK_SECRET_KEY icin ornek uretim:
python3 -c "import secrets; print(secrets.token_hex(32))"
3. Tablolar
Uygulama ilk acilista tablolari otomatik olusturur.
Neon Table Editor'da sunlari goreceksin:
users: hesap acan veya Google ile giris yapan kullanicilarusage_counters: gunluk ve dakikalik soru limitleri
Misafirler de users tablosunda tutulur:
provider = 'guest'role = 'guest'email = 'guest-...@guest.local'
Bu sayede misafir kotasi sadece tarayici ekraninda degil, veritabaninda da kalici izlenir.
4. Kontrol SQL'leri
Son kayit olan kullanicilar:
SELECT id, email, provider, role, created_at
FROM users
ORDER BY created_at DESC;
Misafir kullanicilar:
SELECT id, email, created_at
FROM users
WHERE role = 'guest'
ORDER BY created_at DESC;
Bugunku kullanımlar:
SELECT *
FROM usage_counters
WHERE period_type = 'day'
ORDER BY updated_at DESC;
Hesapli kullanicilarin gunluk soru sayilari:
SELECT u.email, c.period_key, c.count
FROM usage_counters c
JOIN users u ON c.subject_id = u.id::text
WHERE c.subject_type = 'user'
AND c.period_type = 'day'
ORDER BY c.period_key DESC, c.count DESC;
Misafirlerin gunluk soru sayilari:
SELECT u.id, u.email, c.period_key, c.count
FROM usage_counters c
JOIN users u ON c.subject_id = u.id::text
WHERE u.role = 'guest'
AND c.period_type = 'day'
ORDER BY c.period_key DESC, c.count DESC;
5. Notlar
- Sifreler duz metin olarak saklanmaz;
password_hasholarak tutulur. DATABASE_URLbos kalirsa uygulama lokal gelistirme icindata/app.dbSQLite dosyasini kullanir.- Production'da
DATABASE_URLmutlaka Neon PostgreSQL URL'si olmalidir.