1
0
mirror of https://github.com/MADTeacher/go_basics.git synced 2025-11-23 21:34:47 +02:00
Files
go_basics/part_7/tic_tac_toe_v6/database/database.go

46 lines
1.2 KiB
Go

package database
import (
"fmt"
"os"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
type SQLiteRepository struct {
db *gorm.DB // заменили на *gorm.DB
}
func NewSQLiteRepository() (*SQLiteRepository, error) {
// Создаем репозиторий
repository := &SQLiteRepository{}
// Проверяем существование файла базы данных
dbExists := true
if _, err := os.Stat(dbName); os.IsNotExist(err) {
dbExists = false
}
// Открываем соединение с базой данных
db, err := gorm.Open(sqlite.Open(dbName), &gorm.Config{})
if err != nil {
return nil, fmt.Errorf("failed to connect to database: %w", err)
}
// Сохраняем соединение в репозитории
repository.db = db
// Если база данных только что создана, выполняем миграцию
if !dbExists {
fmt.Println("Creating new database schema")
if err := db.AutoMigrate(&Player{}, &GameSnapshot{}, &PlayerFinishGame{}); err != nil {
return nil, fmt.Errorf("failed to migrate database: %w", err)
}
} else {
fmt.Println("Using existing database")
}
return repository, nil
}