Replace status_id with in_progress boolean field
- Remove task_statuses lookup table and StatusID foreign key - Add InProgress boolean field to Task model - Add database migration (005_replace_status_with_in_progress) - Update all handlers, services, and repositories - Update admin frontend to display in_progress as checkbox/boolean - Remove Task Statuses tab from admin lookups page - Update tests to use InProgress instead of StatusID - Task categorization now uses InProgress for kanban column assignment 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -15,13 +15,12 @@ import (
|
||||
|
||||
// SeededDataResponse represents the unified seeded data response
|
||||
type SeededDataResponse struct {
|
||||
ResidenceTypes interface{} `json:"residence_types"`
|
||||
TaskCategories interface{} `json:"task_categories"`
|
||||
TaskPriorities interface{} `json:"task_priorities"`
|
||||
TaskFrequencies interface{} `json:"task_frequencies"`
|
||||
TaskStatuses interface{} `json:"task_statuses"`
|
||||
ContractorSpecialties interface{} `json:"contractor_specialties"`
|
||||
TaskTemplates responses.TaskTemplatesGroupedResponse `json:"task_templates"`
|
||||
ResidenceTypes interface{} `json:"residence_types"`
|
||||
TaskCategories interface{} `json:"task_categories"`
|
||||
TaskPriorities interface{} `json:"task_priorities"`
|
||||
TaskFrequencies interface{} `json:"task_frequencies"`
|
||||
ContractorSpecialties interface{} `json:"contractor_specialties"`
|
||||
TaskTemplates responses.TaskTemplatesGroupedResponse `json:"task_templates"`
|
||||
}
|
||||
|
||||
// StaticDataHandler handles static/lookup data endpoints
|
||||
@@ -113,12 +112,6 @@ func (h *StaticDataHandler) GetStaticData(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
taskStatuses, err := h.taskService.GetStatuses()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": i18n.LocalizedMessage(c, "error.failed_to_fetch_task_statuses")})
|
||||
return
|
||||
}
|
||||
|
||||
contractorSpecialties, err := h.contractorService.GetSpecialties()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": i18n.LocalizedMessage(c, "error.failed_to_fetch_contractor_specialties")})
|
||||
@@ -137,7 +130,6 @@ func (h *StaticDataHandler) GetStaticData(c *gin.Context) {
|
||||
TaskCategories: taskCategories,
|
||||
TaskPriorities: taskPriorities,
|
||||
TaskFrequencies: taskFrequencies,
|
||||
TaskStatuses: taskStatuses,
|
||||
ContractorSpecialties: contractorSpecialties,
|
||||
TaskTemplates: taskTemplates,
|
||||
}
|
||||
|
||||
@@ -517,16 +517,6 @@ func (h *TaskHandler) GetPriorities(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, priorities)
|
||||
}
|
||||
|
||||
// GetStatuses handles GET /api/tasks/statuses/
|
||||
func (h *TaskHandler) GetStatuses(c *gin.Context) {
|
||||
statuses, err := h.taskService.GetStatuses()
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, statuses)
|
||||
}
|
||||
|
||||
// GetFrequencies handles GET /api/tasks/frequencies/
|
||||
func (h *TaskHandler) GetFrequencies(c *gin.Context) {
|
||||
frequencies, err := h.taskService.GetFrequencies()
|
||||
|
||||
@@ -610,7 +610,6 @@ func TestTaskHandler_GetLookups(t *testing.T) {
|
||||
authGroup.Use(testutil.MockAuthMiddleware(user))
|
||||
authGroup.GET("/categories/", handler.GetCategories)
|
||||
authGroup.GET("/priorities/", handler.GetPriorities)
|
||||
authGroup.GET("/statuses/", handler.GetStatuses)
|
||||
authGroup.GET("/frequencies/", handler.GetFrequencies)
|
||||
|
||||
t.Run("get categories", func(t *testing.T) {
|
||||
@@ -642,18 +641,6 @@ func TestTaskHandler_GetLookups(t *testing.T) {
|
||||
assert.Contains(t, response[0], "level")
|
||||
})
|
||||
|
||||
t.Run("get statuses", func(t *testing.T) {
|
||||
w := testutil.MakeRequest(router, "GET", "/api/tasks/statuses/", nil, "test-token")
|
||||
|
||||
testutil.AssertStatusCode(t, w, http.StatusOK)
|
||||
|
||||
var response []map[string]interface{}
|
||||
err := json.Unmarshal(w.Body.Bytes(), &response)
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Greater(t, len(response), 0)
|
||||
})
|
||||
|
||||
t.Run("get frequencies", func(t *testing.T) {
|
||||
w := testutil.MakeRequest(router, "GET", "/api/tasks/frequencies/", nil, "test-token")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user