package models

import (
	"gorm.io/gorm"
)

// CorsWhitelist - CORS için izin verilen origin'ler
type CorsWhitelist struct {
	gorm.Model
	Origin      string `gorm:"type:varchar(255);uniqueIndex;not null" json:"origin"`
	Description string `gorm:"type:varchar(255)" json:"description"`
	IsActive    bool   `gorm:"default:true" json:"is_active"`
	CreatedBy   string `gorm:"type:varchar(255)" json:"created_by,omitempty"`
}

// CorsBlacklist - CORS için yasaklanan origin'ler
type CorsBlacklist struct {
	gorm.Model
	Origin    string `gorm:"type:varchar(255);uniqueIndex;not null" json:"origin"`
	Reason    string `gorm:"type:varchar(255)" json:"reason"`
	IsActive  bool   `gorm:"default:true" json:"is_active"`
	CreatedBy string `gorm:"type:varchar(255)" json:"created_by,omitempty"`
}

// RateLimitSetting - Rate limit ayarları
type RateLimitSetting struct {
	gorm.Model
	Name          string `gorm:"type:varchar(100);uniqueIndex;not null" json:"name"` // e.g., "login", "register", "api"
	Description   string `gorm:"type:varchar(255)" json:"description"`
	MaxRequests   int64  `gorm:"not null" json:"max_requests"`   // Max istek sayısı
	WindowSeconds int    `gorm:"not null" json:"window_seconds"` // Zaman penceresi (saniye)
	IsActive      bool   `gorm:"default:true" json:"is_active"`
	UpdatedBy     string `gorm:"type:varchar(255)" json:"updated_by,omitempty"`
}
