preparing to load tags alongside with project tasks
This commit is contained in:
@@ -253,8 +253,13 @@ CREATE TABLE IF NOT EXISTS {0} (
|
||||
public Set<String> list(long userId, String module, long entityId) {
|
||||
try {
|
||||
var tags = new HashSet<String>();
|
||||
|
||||
// load tags assigned to user
|
||||
var rs = select(TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ENTITY_ID,equal(entityId)).where(USER_ID,equal(userId)).exec(db);
|
||||
while (rs.next()) tags.add(rs.getString(1));
|
||||
rs.close();
|
||||
|
||||
// load tags assigned to no user
|
||||
rs = select(TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ENTITY_ID,equal(entityId)).where(USER_ID,isNull()).exec(db);
|
||||
while (rs.next()) tags.add(rs.getString(1));
|
||||
rs.close();
|
||||
@@ -264,6 +269,26 @@ CREATE TABLE IF NOT EXISTS {0} (
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, ? extends Collection<String>> list(long userId, String module, Collection<Long> entityIds) {
|
||||
try {
|
||||
var tags = new HashMap<Long,HashSet<String>>();
|
||||
|
||||
// load tags assigned to user
|
||||
var rs = select(ENTITY_ID,TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ENTITY_ID,in(entityIds.toArray())).where(USER_ID,equal(userId)).exec(db);
|
||||
while (rs.next()) tags.computeIfAbsent(rs.getLong(ENTITY_ID), k -> new HashSet<>()).add(rs.getString(TAG));
|
||||
rs.close();
|
||||
|
||||
// load tags assigned to no user
|
||||
rs = select(TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ENTITY_ID,in(entityIds.toArray())).where(USER_ID,isNull()).exec(db);
|
||||
while (rs.next()) tags.computeIfAbsent(rs.getLong(ENTITY_ID), k -> new HashSet<>()).add(rs.getString(TAG));
|
||||
rs.close();
|
||||
return tags;
|
||||
} catch (SQLException e) {
|
||||
throw new UmbrellaException("Failed to load tags");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(Collection<Long> userIds, String module, long entityId, Collection<String> tags) {
|
||||
try {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.tags;
|
||||
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -15,8 +17,16 @@ public interface TagDB {
|
||||
|
||||
Set<String> list(long userId, String module, long entityId);
|
||||
|
||||
/**
|
||||
* Loads the tags for all the entities denominated by the collection <em>entityIds</em>.
|
||||
* @param module the realm the entities belong to
|
||||
* @param entityIds the set of entities of the respective realm
|
||||
* @param userId the id of the user, for whom the tags shall be loaded
|
||||
* @return a map from entity ids to assigned tags
|
||||
*/
|
||||
Map<Long, ? extends Collection<String>> list(long userId, String module, Collection<Long> entityIds);
|
||||
|
||||
void save(Collection<Long> userIds, String module, long entityId, Collection<String> tags);
|
||||
|
||||
void updateId(String module, Object oldId, Object newId);
|
||||
|
||||
}
|
||||
|
||||
@@ -121,6 +121,11 @@ public class TagModule extends BaseHandler implements TagService {
|
||||
return tagDb.list(user.id(),module,entityId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, ? extends Collection<String>> getTags(String module, Collection<Long> entityIds, UmbrellaUser user) throws UmbrellaException {
|
||||
return tagDb.list(user.id(),module,entityIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(String module, long entityId, Collection<Long> userIds, Collection<String> tags) {
|
||||
tagDb.save(userIds,module,entityId,tags);
|
||||
|
||||
Reference in New Issue
Block a user