freactoring to get company list work in efficient way

This commit is contained in:
2025-07-18 23:23:14 +02:00
parent 722f12912d
commit a06217517b
22 changed files with 203 additions and 76 deletions

View File

@@ -19,9 +19,7 @@ import de.srsoftware.umbrella.core.model.Company;
import de.srsoftware.umbrella.core.model.Token;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.io.IOException;
import java.util.Collection;
import java.util.HashSet;
import java.util.Optional;
import java.util.*;
public class CompanyModule extends BaseHandler implements CompanyService {
@@ -58,8 +56,9 @@ public class CompanyModule extends BaseHandler implements CompanyService {
}
private boolean getCompanyList(UmbrellaUser user, HttpExchange ex) throws IOException, UmbrellaException {
var list = listCompaniesOf(user).stream().map(Company::toMap);
return sendContent(ex,list);
var result = new HashMap<Long,Map<String,Object>>();
for (var entry : listCompaniesOf(user).entrySet()) result.put(entry.getKey(),entry.getValue().toMap());
return sendContent(ex,result);
}
@@ -72,7 +71,7 @@ public class CompanyModule extends BaseHandler implements CompanyService {
}
@Override
public Collection<Company> listCompaniesOf(UmbrellaUser user) throws UmbrellaException {
public Map<Long,Company> listCompaniesOf(UmbrellaUser user) throws UmbrellaException {
return companyDb.listCompaniesOf(user.id());
}

View File

@@ -14,7 +14,9 @@ import de.srsoftware.umbrella.core.model.Company;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
public class SqliteDb implements CompanyDb {
@@ -38,11 +40,14 @@ public class SqliteDb implements CompanyDb {
}
@Override
public Collection<Company> listCompaniesOf(long userId) throws UmbrellaException {
public Map<Long,Company> listCompaniesOf(long userId) throws UmbrellaException {
try {
var rs = select("*").from(TABLE_COMPANIES).leftJoin(ID,TABLE_COMPANIES_USERS,COMPANY_ID).where(USER_ID,equal(userId)).exec(db);
var companies = new HashSet<Company>();
while (rs.next()) companies.add(Company.of(rs));
var companies = new HashMap<Long,Company>();
while (rs.next()) {
var company = Company.of(rs);
companies.put(company.id(),company);
}
rs.close();
return companies;
} catch (SQLException e) {

View File

@@ -4,11 +4,12 @@ package de.srsoftware.umbrella.company.api;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Company;
import java.util.Collection;
import java.util.Map;
public interface CompanyDb {
Collection<Long> getMembers(long companyId) throws UmbrellaException;
Collection<Company> listCompaniesOf(long id) throws UmbrellaException;
Map<Long,Company> listCompaniesOf(long id) throws UmbrellaException;
Company load(long companyId) throws UmbrellaException;
}