Files
zeitkort-web-golang/seed.go
T

134 lines
4.2 KiB
Go

package main
import (
"fmt"
"time"
"zeitkort-web/repository"
)
func seedDemoData(repo repository.Repository) {
if resetter, ok := repo.(interface{ Reset() }); ok {
resetter.Reset()
}
now := time.Now()
loc := now.Location()
mukki, _ := repo.InsertCompany(repository.Company{
Name: "Mukki",
Address: "Snoppiesgøta 1, FO-100 Tórshavn",
ContactEmail: "kontakt@mukki.fo",
ContactPhone: "+298 210000",
HourlyRate: 850,
})
teltlar, _ := repo.InsertCompany(repository.Company{
Name: "Teldlar og Teldur",
Address: "Teldutrøð 5, FO-100 Tórshavn",
ContactEmail: "info@teltlar.fo",
ContactPhone: "+298 310000",
HourlyRate: 750,
})
sjogvur, _ := repo.InsertCompany(repository.Company{
Name: "Sjógvur.fo",
Address: "Vesturgøta 22, FO-100 Tórshavn",
ContactEmail: "heiðri@sjogvur.fo",
ContactPhone: "+298 410000",
HourlyRate: 650,
})
mukkiAPI, _ := repo.InsertAssignment(repository.Assignment{
CompanyID: mukki.ID,
Name: "Microservices Backend Migration",
Description: "Refactoring legacy monolith into Go microservices.",
HourlyRate: 850,
Status: "active",
})
mukkiInfra, _ := repo.InsertAssignment(repository.Assignment{
CompanyID: mukki.ID,
Name: "Kubernetes Cluster Setup",
Description: "Deploying K3s cluster.",
HourlyRate: 850,
Status: "active",
})
teltlarERP, _ := repo.InsertAssignment(repository.Assignment{
CompanyID: teltlar.ID,
Name: "ERP Integration Module",
Description: "REST API bridge between SQL Server and frontend.",
HourlyRate: 750,
Status: "active",
})
sjogvurWeb, _ := repo.InsertAssignment(repository.Assignment{
CompanyID: sjogvur.ID,
Name: "Corporate Website Redesign",
Description: "Modernizing frontend with Tailwind and static generation.",
HourlyRate: 650,
Status: "active",
})
tMukkiAPI, _ := repo.InsertTask(repository.Task{AssignmentID: mukkiAPI.ID, Name: "Design gRPC Protobufs"})
tMukkiAPI2, _ := repo.InsertTask(repository.Task{AssignmentID: mukkiAPI.ID, Name: "Implement Auth Middleware"})
tMukkiInfra, _ := repo.InsertTask(repository.Task{AssignmentID: mukkiInfra.ID, Name: "Ansible Playbooks"})
tTeltlar, _ := repo.InsertTask(repository.Task{AssignmentID: teltlarERP.ID, Name: "SQL Stored Procedures"})
tTeltlar2, _ := repo.InsertTask(repository.Task{AssignmentID: teltlarERP.ID, Name: "API Endpoints"})
tSjogvur, _ := repo.InsertTask(repository.Task{AssignmentID: sjogvurWeb.ID, Name: "Design System"})
tSjogvur2, _ := repo.InsertTask(repository.Task{AssignmentID: sjogvurWeb.ID, Name: "SEO Optimization"})
addSession := func(assignID, taskID int64, daysAgo int, hours float64) {
start := time.Date(now.Year(), now.Month(), now.Day()-daysAgo, 9, 0, 0, 0, loc)
end := start.Add(time.Duration(hours * float64(time.Hour)))
task, _ := repo.GetTaskByID(taskID)
desc := fmt.Sprintf("%d - %s", task.Number, task.Name)
repo.InsertManualWorkSession(repository.WorkSession{
AssignmentID: assignID,
TaskID: taskID,
TaskDescription: desc,
StartTime: start,
EndTime: &end,
})
}
addSession(mukkiAPI.ID, tMukkiAPI.ID, 5, 4.5)
addSession(mukkiAPI.ID, tMukkiAPI2.ID, 3, 2.0)
addSession(mukkiInfra.ID, tMukkiInfra.ID, 1, 6.0)
addSession(teltlarERP.ID, tTeltlar.ID, 4, 3.5)
addSession(teltlarERP.ID, tTeltlar2.ID, 2, 5.0)
addSession(sjogvurWeb.ID, tSjogvur.ID, 6, 2.5)
addSession(sjogvurWeb.ID, tSjogvur2.ID, 0, 1.5)
runningStart := now.Add(-45 * time.Minute)
task, _ := repo.GetTaskByID(tSjogvur2.ID)
desc := fmt.Sprintf("%d - %s", task.Number, task.Name)
runningSession, _ := repo.InsertWorkSession(repository.WorkSession{
AssignmentID: sjogvurWeb.ID,
TaskID: tSjogvur2.ID,
TaskDescription: desc,
StartTime: runningStart,
EndTime: nil,
})
if runningSession != nil {
updated := repository.WorkSession{
ID: runningSession.ID,
AssignmentID: runningSession.AssignmentID,
TaskID: runningSession.TaskID,
TaskDescription: desc,
StartTime: runningSession.StartTime,
EndTime: runningSession.EndTime,
DurationMinutes: runningSession.DurationMinutes,
}
repo.UpdateWorkSession(runningSession.ID, updated)
}
}