New bookmarks feature: domain model, repository, service and handler supporting list/create/update/delete. Public endpoint exposes the admin user's bookmarks for the homepage navigation grid; authenticated endpoints scope by user. Dev Dockerfile drops air for plain `go run` and uses goproxy.cn to avoid build failures on the deploy host. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
28 lines
555 B
Go
28 lines
555 B
Go
package db
|
|
|
|
import (
|
|
"log"
|
|
|
|
"evanpage-backend/internal/config"
|
|
"evanpage-backend/internal/domain"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var DB *gorm.DB
|
|
|
|
func Init(cfg *config.Config) *gorm.DB {
|
|
var err error
|
|
DB, err = gorm.Open(postgres.Open(cfg.DatabaseURL), &gorm.Config{})
|
|
if err != nil {
|
|
log.Fatalf("failed to connect database: %v", err)
|
|
}
|
|
|
|
if err := DB.AutoMigrate(&domain.User{}, &domain.Bookmark{}); err != nil {
|
|
log.Fatalf("failed to migrate database: %v", err)
|
|
}
|
|
|
|
log.Println("database connected and migrated")
|
|
return DB
|
|
}
|