68 lines
2.3 KiB
Go
68 lines
2.3 KiB
Go
package models
|
||
|
||
import (
|
||
"time"
|
||
|
||
"github.com/google/uuid"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
// CorsWhitelist - CORS için izin verilen origin'ler
|
||
type CorsWhitelist struct {
|
||
ID uuid.UUID `gorm:"type:uuid;primary_key" json:"id"`
|
||
Origin string `gorm:"type:varchar(255);uniqueIndex;not null" json:"origin"`
|
||
Description string `gorm:"type:text" json:"description"`
|
||
IsActive bool `gorm:"default:true" json:"is_active"`
|
||
CreatedBy string `gorm:"type:varchar(255)" json:"created_by,omitempty"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
}
|
||
|
||
// BeforeCreate - UUID otomatik oluşturma
|
||
func (c *CorsWhitelist) BeforeCreate(tx *gorm.DB) error {
|
||
if c.ID == uuid.Nil {
|
||
c.ID = uuid.New()
|
||
}
|
||
return nil
|
||
}
|
||
|
||
// CorsBlacklist - CORS için yasaklanan origin'ler
|
||
type CorsBlacklist struct {
|
||
ID uuid.UUID `gorm:"type:uuid;primary_key" json:"id"`
|
||
Origin string `gorm:"type:varchar(255);uniqueIndex;not null" json:"origin"`
|
||
Reason string `gorm:"type:text" json:"reason"`
|
||
IsActive bool `gorm:"default:true" json:"is_active"`
|
||
CreatedBy string `gorm:"type:varchar(255)" json:"created_by,omitempty"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
}
|
||
|
||
// BeforeCreate - UUID otomatik oluşturma
|
||
func (c *CorsBlacklist) BeforeCreate(tx *gorm.DB) error {
|
||
if c.ID == uuid.Nil {
|
||
c.ID = uuid.New()
|
||
}
|
||
return nil
|
||
}
|
||
|
||
// RateLimitSetting - Rate limit ayarları
|
||
type RateLimitSetting struct {
|
||
ID uuid.UUID `gorm:"type:uuid;primary_key" json:"id"`
|
||
Name string `gorm:"type:varchar(100);uniqueIndex;not null" json:"name"` // e.g., "login", "register", "api"
|
||
Description string `gorm:"type:text" 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"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
}
|
||
|
||
// BeforeCreate - UUID otomatik oluşturma
|
||
func (r *RateLimitSetting) BeforeCreate(tx *gorm.DB) error {
|
||
if r.ID == uuid.Nil {
|
||
r.ID = uuid.New()
|
||
}
|
||
return nil
|
||
}
|