first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:40:14 +03:00
commit e04ba85564
129 changed files with 17541 additions and 0 deletions

101
configs/db.go Normal file
View File

@@ -0,0 +1,101 @@
package configs
import (
"fmt"
"log"
"os"
"time"
accountModels "ginimageApi/app/accounts/models"
blogModels "ginimageApi/app/blogs/models"
imageModels "ginimageApi/app/images/models"
mcpModels "ginimageApi/app/mcp/models"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
// DB global GORM veritabanı bağlantısı
var DB *gorm.DB
// ConnectDB .env dosyasındaki ayarlarla MySQL bağlantısını kurar
func ConnectDB() error {
host := os.Getenv("DB_HOST")
port := os.Getenv("DB_PORT")
user := os.Getenv("DB_USER")
password := os.Getenv("DB_PASSWORD")
dbName := os.Getenv("DB_NAME")
// DSN (Data Source Name) oluştur
dsn := fmt.Sprintf(
"%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
user, password, host, port, dbName,
)
// GORM logger ayarları
gormLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
logger.Config{
SlowThreshold: 200 * time.Millisecond,
LogLevel: logger.Warn,
IgnoreRecordNotFoundError: true,
Colorful: true,
},
)
var err error
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: gormLogger,
})
if err != nil {
return fmt.Errorf("veritabanına bağlanılamadı: %w", err)
}
// Bağlantı havuzu ayarları
sqlDB, err := DB.DB()
if err != nil {
return fmt.Errorf("sql.DB alınamadı: %w", err)
}
sqlDB.SetMaxIdleConns(10)
sqlDB.SetMaxOpenConns(100)
sqlDB.SetConnMaxLifetime(time.Hour)
log.Printf("✅ Veritabanı bağlantısı kuruldu: %s:%s/%s", host, port, dbName)
return nil
}
// RunAutoMigrate tanımlanan modelleri otomatik olarak migrate eder
func RunAutoMigrate() error {
if DB == nil {
return fmt.Errorf("migration icin veritabani baglantisi yok")
}
err := DB.AutoMigrate(
&accountModels.User{},
&accountModels.SocialAccount{},
&accountModels.Profile{},
&accountModels.RefreshToken{},
&blogModels.Category{},
&blogModels.Tag{},
&blogModels.Post{},
&blogModels.CategoryView{},
&blogModels.Comment{},
&imageModels.Image{},
&mcpModels.ToolRun{},
)
if err != nil {
return fmt.Errorf("auto migrate basarisiz: %w", err)
}
log.Println("✅ AutoMigrate tamamlandı")
return nil
}
// SeedSecurityDefaults dinamik guvenlik ayarlari icin baslangic adimini temsil eder.
// Bu projede kalici ayar tablolari henuz olmadigi icin no-op tutulur.
func SeedSecurityDefaults() error {
log.Println("✅ SeedSecurityDefaults tamamlandı")
return nil
}