implemented deletion of tags upon deletion of task

This commit is contained in:
2025-07-28 00:13:41 +02:00
parent e59e40b809
commit 2bd7270f83
8 changed files with 71 additions and 20 deletions

View File

@@ -4,11 +4,13 @@ package de.srsoftware.umbrella.task;
public class Constants {
private Constants(){}
public static final String CONFIG_DATABASE = "umbrella.modules.task.database";
public static final String CHILDREN = "children";
public static final String ESTIMATED_TIMES = "estimated_times";
public static final String TABLE_TASKS = "tasks";
public static final String TABLE_TASKS_USERS = "tasks_users";
public static final String TASK = "task";
public static final String TASKS = "tasks";
public static final String TASK_ID = "task_id";
}

View File

@@ -21,10 +21,7 @@ import de.srsoftware.configuration.Configuration;
import de.srsoftware.tools.Path;
import de.srsoftware.tools.SessionToken;
import de.srsoftware.umbrella.core.BaseHandler;
import de.srsoftware.umbrella.core.api.CompanyService;
import de.srsoftware.umbrella.core.api.ProjectService;
import de.srsoftware.umbrella.core.api.TaskService;
import de.srsoftware.umbrella.core.api.UserService;
import de.srsoftware.umbrella.core.api.*;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.*;
import de.srsoftware.umbrella.core.model.Task;
@@ -40,12 +37,14 @@ public class TaskModule extends BaseHandler implements TaskService {
private final ProjectService projects;
private final UserService users;
private final CompanyService companies;
private final TagService tags;
public TaskModule(Configuration config, ProjectService projectService) throws UmbrellaException {
public TaskModule(Configuration config, ProjectService projectService, TagService tagService) throws UmbrellaException {
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
taskDb = new SqliteDb(connect(dbFile));
projects = projectService;
companies = projectService.companyService();
tags = tagService;
users = companies.userService();
}
@@ -66,6 +65,7 @@ public class TaskModule extends BaseHandler implements TaskService {
var member = task.members().get(user.id());
if (member == null || !member.mayWrite()) throw forbidden("You are not allowed to delete {0}",task.name());
taskDb.delete(task);
tags.deleteEntity(TASK,taskId);
return sendContent(ex,Map.of(DELETED,taskId));
}
@@ -304,12 +304,18 @@ public class TaskModule extends BaseHandler implements TaskService {
Task task = Task.of(json);
task = taskDb.save(task);
var memberIds = new HashSet<Long>();
for (var key : memberData.keySet()){
long userId = Long.parseLong(key);
memberIds.add(userId);
var nested = memberData.getJSONObject(key).getJSONObject(PERMISSION);
var permission = nested.has(CODE) ? Permission.of(nested.getInt(CODE)) : Permission.valueOf(nested.getString(NAME));
taskDb.setMember(task.id(),userId,permission);
}
if (isSet(task.parentTaskId())){
var tagList = tags.getTags(TASK,task.parentTaskId(),user);
tags.save(TASK,task.id(),memberIds,tagList);
}
return sendContent(ex,loadMembers(task));
}