hPiBot openclaw ve Opencode ilk versiyonu[B
This commit is contained in:
225
docs/database-setup.md
Normal file
225
docs/database-setup.md
Normal file
@@ -0,0 +1,225 @@
|
||||
# 🗄️ Veritabanı Kurulum Talimatları
|
||||
|
||||
## MariaDB Kurulumu
|
||||
|
||||
### Windows için MariaDB Kurulumu
|
||||
|
||||
1. **MariaDB İndirme**
|
||||
- [MariaDB resmi sitesinden](https://mariadb.org/download/) Windows sürümünü indirin
|
||||
- MSI installer'ı çalıştırın
|
||||
|
||||
2. **Kurulum Adımları**
|
||||
```
|
||||
- "Custom" kurulum seçin
|
||||
- Root şifresini belirleyin (güvenli bir şifre seçin)
|
||||
- Port: 3306 (varsayılan)
|
||||
- Character Set: UTF8
|
||||
```
|
||||
|
||||
3. **Servis Kontrolü**
|
||||
```bash
|
||||
# Servisin çalışıp çalışmadığını kontrol edin
|
||||
net start MariaDB
|
||||
```
|
||||
|
||||
### MariaDB Veritabanı Oluşturma
|
||||
|
||||
1. **MariaDB'ye Bağlanma**
|
||||
```bash
|
||||
mysql -u root -p
|
||||
```
|
||||
|
||||
2. **Veritabanı Oluşturma**
|
||||
```sql
|
||||
-- HMarket veritabanını oluştur
|
||||
CREATE DATABASE hmarket CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- Uygulama için kullanıcı oluştur
|
||||
CREATE USER 'hmarket_user'@'localhost' IDENTIFIED BY 'güvenli_şifre_buraya';
|
||||
|
||||
-- Kullanıcıya yetki ver
|
||||
GRANT ALL PRIVILEGES ON hmarket.* TO 'hmarket_user'@'localhost';
|
||||
|
||||
-- Yetkileri yenile
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
-- Çıkış
|
||||
EXIT;
|
||||
```
|
||||
|
||||
## Backend Kurulumu
|
||||
|
||||
### 1. Bağımlılıkları Yükle
|
||||
```bash
|
||||
cd backend
|
||||
npm install
|
||||
```
|
||||
|
||||
### 2. Environment Dosyasını Ayarla
|
||||
```bash
|
||||
# .env.example dosyasını .env olarak kopyala
|
||||
copy .env.example .env
|
||||
|
||||
# .env dosyasını düzenle ve veritabanı bilgilerini gir
|
||||
```
|
||||
|
||||
### 3. .env Dosyası Örnek Konfigürasyonu
|
||||
```env
|
||||
# Veritabanı bağlantısı
|
||||
DATABASE_URL="mysql://hmarket_user:güvenli_şifre_buraya@localhost:3306/hmarket"
|
||||
|
||||
# JWT ayarları
|
||||
JWT_SECRET=super-gizli-jwt-anahtari-buraya-yazin
|
||||
JWT_EXPIRES_IN=7d
|
||||
|
||||
# Sunucu ayarları
|
||||
PORT=3001
|
||||
NODE_ENV=development
|
||||
CORS_ORIGIN=http://localhost:3000
|
||||
```
|
||||
|
||||
### 4. Prisma Kurulumu ve Veritabanı Migrasyonu
|
||||
```bash
|
||||
# Prisma client'ı oluştur
|
||||
npm run db:generate
|
||||
|
||||
# Veritabanı şemasını uygula
|
||||
npm run db:push
|
||||
|
||||
# Başlangıç verilerini yükle
|
||||
npm run db:seed
|
||||
```
|
||||
|
||||
### 5. Sunucuyu Başlat
|
||||
```bash
|
||||
# Geliştirme modu
|
||||
npm run dev
|
||||
|
||||
# Üretim modu
|
||||
npm start
|
||||
```
|
||||
|
||||
## Veritabanı Şeması Açıklaması
|
||||
|
||||
### Ana Tablolar
|
||||
|
||||
#### 1. **users** - Kullanıcılar
|
||||
- Kullanıcı bilgileri, kimlik doğrulama
|
||||
- Admin yetkileri
|
||||
- Profil bilgileri
|
||||
|
||||
#### 2. **shopping_lists** - Alışveriş Listeleri
|
||||
- Liste bilgileri (isim, açıklama, renk)
|
||||
- Sahiplik bilgisi
|
||||
- Aktiflik durumu
|
||||
|
||||
#### 3. **list_members** - Liste Üyeleri
|
||||
- Çoklu kullanıcı desteği
|
||||
- Rol tabanlı yetkilendirme (admin, member, viewer)
|
||||
- Katılım tarihi
|
||||
|
||||
#### 4. **products** - Ürünler
|
||||
- Ürün bilgileri (isim, barkod, kategori)
|
||||
- Marka bilgisi
|
||||
- Resim desteği
|
||||
|
||||
#### 5. **list_items** - Liste Öğeleri
|
||||
- Listedeki ürünler
|
||||
- Miktar, birim, fiyat bilgileri
|
||||
- Satın alma durumu
|
||||
- Öncelik seviyeleri
|
||||
|
||||
#### 6. **categories** - Kategoriler
|
||||
- Ürün kategorileri
|
||||
- Icon ve renk desteği
|
||||
- Sıralama
|
||||
|
||||
#### 7. **price_history** - Fiyat Geçmişi
|
||||
- Ürün fiyat takibi
|
||||
- Mağaza ve konum bilgisi
|
||||
- Zaman serisi verileri
|
||||
|
||||
#### 8. **notifications** - Bildirimler
|
||||
- Push notification desteği
|
||||
- Bildirim türleri
|
||||
- Okunma durumu
|
||||
|
||||
#### 9. **activities** - Aktivite Logu
|
||||
- Gerçek zamanlı güncellemeler için
|
||||
- Kullanıcı aktiviteleri
|
||||
- JSON veri desteği
|
||||
|
||||
### İlişkiler
|
||||
|
||||
```
|
||||
User (1) -----> (N) ShoppingList (sahiplik)
|
||||
User (N) <----> (N) ShoppingList (üyelik - ListMember tablosu üzerinden)
|
||||
ShoppingList (1) -----> (N) ListItem
|
||||
Product (1) -----> (N) ListItem
|
||||
Product (1) -----> (N) PriceHistory
|
||||
Category (1) -----> (N) Product
|
||||
User (1) -----> (N) Notification
|
||||
User (1) -----> (N) Activity
|
||||
ShoppingList (1) -----> (N) Activity
|
||||
```
|
||||
|
||||
## Performans Optimizasyonları
|
||||
|
||||
### İndeksler
|
||||
Prisma otomatik olarak aşağıdaki indeksleri oluşturur:
|
||||
- Primary key'ler
|
||||
- Unique constraint'ler
|
||||
- Foreign key'ler
|
||||
|
||||
### Ek Optimizasyonlar
|
||||
```sql
|
||||
-- Sık kullanılan sorgular için ek indeksler
|
||||
CREATE INDEX idx_list_items_list_purchased ON list_items(listId, isPurchased);
|
||||
CREATE INDEX idx_activities_list_created ON activities(listId, createdAt);
|
||||
CREATE INDEX idx_price_history_product_created ON price_history(productId, createdAt);
|
||||
```
|
||||
|
||||
## Yedekleme
|
||||
|
||||
### Otomatik Yedekleme Script'i
|
||||
```bash
|
||||
# Günlük yedekleme
|
||||
mysqldump -u hmarket_user -p hmarket > backup_$(date +%Y%m%d).sql
|
||||
|
||||
# Haftalık tam yedekleme
|
||||
mysqldump -u hmarket_user -p --all-databases > full_backup_$(date +%Y%m%d).sql
|
||||
```
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
### Yaygın Hatalar
|
||||
|
||||
1. **Bağlantı Hatası**
|
||||
```
|
||||
Error: P1001: Can't reach database server
|
||||
```
|
||||
- MariaDB servisinin çalıştığını kontrol edin
|
||||
- Bağlantı bilgilerini doğrulayın
|
||||
|
||||
2. **Yetki Hatası**
|
||||
```
|
||||
Error: Access denied for user
|
||||
```
|
||||
- Kullanıcı yetkilerini kontrol edin
|
||||
- Şifrenin doğru olduğundan emin olun
|
||||
|
||||
3. **Şema Hatası**
|
||||
```
|
||||
Error: Table doesn't exist
|
||||
```
|
||||
- `npm run db:push` komutunu çalıştırın
|
||||
- Veritabanının doğru oluşturulduğunu kontrol edin
|
||||
|
||||
### Log Kontrolü
|
||||
```bash
|
||||
# MariaDB loglarını kontrol et
|
||||
tail -f /var/log/mysql/error.log
|
||||
|
||||
# Uygulama loglarını kontrol et
|
||||
npm run dev
|
||||
```
|
||||
Reference in New Issue
Block a user