mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2025-11-13 18:03:53 +00:00
91 lines
2.2 KiB
Go
91 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/bitechdev/ResolveSpec/pkg/logger"
|
|
"github.com/bitechdev/ResolveSpec/pkg/modelregistry"
|
|
"github.com/bitechdev/ResolveSpec/pkg/testmodels"
|
|
|
|
"github.com/bitechdev/ResolveSpec/pkg/resolvespec"
|
|
"github.com/gorilla/mux"
|
|
|
|
"github.com/glebarez/sqlite"
|
|
"gorm.io/gorm"
|
|
gormlog "gorm.io/gorm/logger"
|
|
)
|
|
|
|
func main() {
|
|
// Initialize logger
|
|
fmt.Println("ResolveSpec test server starting")
|
|
logger.Init(true)
|
|
|
|
// Initialize database
|
|
db, err := initDB()
|
|
if err != nil {
|
|
logger.Error("Failed to initialize database: %+v", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// Create router
|
|
r := mux.NewRouter()
|
|
|
|
// Initialize API handler using new API
|
|
handler := resolvespec.NewHandlerWithGORM(db)
|
|
|
|
// Create a new registry instance and register models
|
|
registry := modelregistry.NewModelRegistry()
|
|
testmodels.RegisterTestModels(registry)
|
|
|
|
// Register models with handler
|
|
models := testmodels.GetTestModels()
|
|
modelNames := []string{"departments", "employees", "projects", "project_tasks", "documents", "comments"}
|
|
for i, model := range models {
|
|
handler.RegisterModel("public", modelNames[i], model)
|
|
}
|
|
|
|
// Setup routes using new SetupMuxRoutes function
|
|
resolvespec.SetupMuxRoutes(r, handler)
|
|
|
|
// Start server
|
|
logger.Info("Starting server on :8080")
|
|
if err := http.ListenAndServe(":8080", r); err != nil {
|
|
logger.Error("Server failed to start: %v", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func initDB() (*gorm.DB, error) {
|
|
|
|
newLogger := gormlog.New(
|
|
log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
|
|
gormlog.Config{
|
|
SlowThreshold: time.Second, // Slow SQL threshold
|
|
LogLevel: gormlog.Info, // Log level
|
|
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
|
|
ParameterizedQueries: true, // Don't include params in the SQL log
|
|
Colorful: true, // Disable color
|
|
},
|
|
)
|
|
|
|
// Create SQLite database
|
|
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{Logger: newLogger, FullSaveAssociations: false})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
modelList := testmodels.GetTestModels()
|
|
|
|
// Auto migrate schemas
|
|
err = db.AutoMigrate(modelList...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return db, nil
|
|
}
|