/* © SRSoftware 2025 */
package de.srsoftware.umbrella.project;

import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Permission;
import de.srsoftware.umbrella.core.model.Project;
import de.srsoftware.umbrella.core.model.Status;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.util.Collection;
import java.util.Map;

public interface ProjectDb {
	void dropMember(long projectId, long userId);
	Map<Long, Project> find(long userId, Collection<String> keys, boolean fulltext);
	Map<Long, Permission> getMembers(Project project);
	Project load(long projectId) throws UmbrellaException;
	Map<Long, Project> ofCompany(long companyId, boolean includeClosed) throws UmbrellaException;

	Map<Long, Project> ofUser(long userId, boolean includeClosed) throws UmbrellaException;

	Project save(Project prj, UmbrellaUser user) throws UmbrellaException;

	Status save(long projectId, Status newState);
}
