mirror of
https://github.com/HangarMC/Hangar.git
synced 2025-02-11 14:52:01 +08:00
work on userdata & service
This commit is contained in:
parent
b20c0de286
commit
1f457a2313
src/main/java/me/minidigger/hangar
db/dao
model/viewhelpers
service
@ -1,13 +1,17 @@
|
||||
package me.minidigger.hangar.db.dao;
|
||||
|
||||
import me.minidigger.hangar.db.model.OrganizationsTable;
|
||||
import me.minidigger.hangar.model.viewhelpers.Organization;
|
||||
import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
|
||||
import org.jdbi.v3.sqlobject.customizer.BindBean;
|
||||
import org.jdbi.v3.sqlobject.customizer.Timestamped;
|
||||
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
|
||||
import org.jdbi.v3.sqlobject.statement.SqlQuery;
|
||||
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
@RegisterBeanMapper(OrganizationsTable.class)
|
||||
public interface OrganizationDao {
|
||||
@ -16,4 +20,9 @@ public interface OrganizationDao {
|
||||
@Timestamped
|
||||
@GetGeneratedKeys
|
||||
OrganizationsTable insert(@BindBean OrganizationsTable organization);
|
||||
|
||||
|
||||
@SqlQuery("SELECT o.id, o.created_at, o.name, o.owner_id, o.user_id FROM organization_members om JOIN organizations o ON om.organization_id = o.id WHERE om.user_id = :id")
|
||||
@RegisterBeanMapper(Organization.class)
|
||||
List<Organization> getUserOrgs(long id);
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ import org.springframework.stereotype.Repository;
|
||||
|
||||
import me.minidigger.hangar.db.model.ProjectsTable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
@RegisterBeanMapper(ProjectsTable.class)
|
||||
public interface ProjectDao {
|
||||
@ -21,4 +23,10 @@ public interface ProjectDao {
|
||||
|
||||
@SqlQuery("select * from projects where lower(owner_name) = lower(:author) AND lower(slug) = lower(:slug)")
|
||||
ProjectsTable getBySlug(String author, String slug);
|
||||
|
||||
@SqlQuery("SELECT COUNT(*) FROM projects WHERE owner_id = :id")
|
||||
int getProjectCountByUserId(long id);
|
||||
|
||||
@SqlQuery("SELECT * FROM projects WHERE owner_id = :id")
|
||||
List<ProjectsTable> getProjectsByUserId(long id);
|
||||
}
|
||||
|
@ -0,0 +1,59 @@
|
||||
package me.minidigger.hangar.model.viewhelpers;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
public class Organization {
|
||||
private long id;
|
||||
private OffsetDateTime createdAt;
|
||||
private String name;
|
||||
private long ownerId;
|
||||
private long userId;
|
||||
|
||||
public Organization(long id, OffsetDateTime createdAt, String name, long ownerId, long userId) {
|
||||
this.id = id;
|
||||
this.createdAt = createdAt;
|
||||
this.name = name;
|
||||
this.ownerId = ownerId;
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public OffsetDateTime getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(OffsetDateTime createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public long getOwnerId() {
|
||||
return ownerId;
|
||||
}
|
||||
|
||||
public void setOwnerId(long ownerId) {
|
||||
this.ownerId = ownerId;
|
||||
}
|
||||
|
||||
public long getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(long userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
}
|
@ -6,7 +6,6 @@ import java.util.List;
|
||||
import me.minidigger.hangar.db.model.UsersTable;
|
||||
import me.minidigger.hangar.model.Permission;
|
||||
import me.minidigger.hangar.model.Role;
|
||||
import me.minidigger.hangar.model.generated.Organization;
|
||||
|
||||
public class UserData {
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
package me.minidigger.hangar.service;
|
||||
|
||||
import me.minidigger.hangar.db.dao.OrganizationDao;
|
||||
import me.minidigger.hangar.db.dao.ProjectDao;
|
||||
import me.minidigger.hangar.model.viewhelpers.Organization;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
@ -19,7 +22,6 @@ import me.minidigger.hangar.db.model.UsersTable;
|
||||
import me.minidigger.hangar.model.Permission;
|
||||
import me.minidigger.hangar.model.Role;
|
||||
import me.minidigger.hangar.model.UserOrdering;
|
||||
import me.minidigger.hangar.model.generated.Organization;
|
||||
import me.minidigger.hangar.model.viewhelpers.Author;
|
||||
import me.minidigger.hangar.model.viewhelpers.HeaderData;
|
||||
import me.minidigger.hangar.model.viewhelpers.Staff;
|
||||
@ -30,12 +32,16 @@ import me.minidigger.hangar.security.HangarAuthentication;
|
||||
public class UserService {
|
||||
|
||||
private final HangarDao<UserDao> userDao;
|
||||
private final HangarDao<OrganizationDao> orgDao;
|
||||
private final HangarDao<ProjectDao> projectDao;
|
||||
private final HangarConfig config;
|
||||
|
||||
@Autowired
|
||||
public UserService(HangarDao<UserDao> userDao, HangarConfig config) {
|
||||
public UserService(HangarDao<UserDao> userDao, HangarConfig config, HangarDao<OrganizationDao> orgDao, HangarDao<ProjectDao> projectDao) {
|
||||
this.userDao = userDao;
|
||||
this.config = config;
|
||||
this.orgDao = orgDao;
|
||||
this.projectDao = projectDao;
|
||||
}
|
||||
|
||||
public UsersTable getCurrentUser() {
|
||||
@ -118,11 +124,11 @@ public class UserService {
|
||||
public UserData getUserData(UsersTable user) {
|
||||
// TODO getUserData
|
||||
boolean isOrga = false;
|
||||
int projectCount = 1;
|
||||
List<Organization> orgas = new ArrayList<>();
|
||||
int projectCount = projectDao.get().getProjectCountByUserId(user.getId());
|
||||
List<Organization> organizations = orgDao.get().getUserOrgs(user.getId());
|
||||
List<Role> globalRoles = List.of(Role.HANGAR_ADMIN);
|
||||
Permission userPerm = Permission.All;
|
||||
Permission orgaPerm = Permission.None;
|
||||
return new UserData(getHeaderData(), user, isOrga, projectCount, orgas, globalRoles, userPerm, orgaPerm);
|
||||
return new UserData(getHeaderData(), user, isOrga, projectCount, organizations, globalRoles, userPerm, orgaPerm);
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.minidigger.hangar.db.dao.HangarDao;
|
||||
import me.minidigger.hangar.db.dao.ProjectDao;
|
||||
@ -36,8 +37,19 @@ public class ProjectService {
|
||||
|
||||
public ProjectData getProjectData(String author, String slug) {
|
||||
ProjectsTable projectsTable = projectDao.get().getBySlug(author, slug);
|
||||
UsersTable projectOwner = userDao.get().getByName(author);
|
||||
if (projectsTable == null || projectOwner == null) {
|
||||
if (projectsTable == null) throw new ResponseStatusException(HttpStatus.NOT_FOUND);
|
||||
return getProjectData(projectsTable);
|
||||
|
||||
}
|
||||
|
||||
public List<ProjectData> getProjectsData(long id) {
|
||||
List<ProjectsTable> projectsTables = projectDao.get().getProjectsByUserId(id);
|
||||
return projectsTables.stream().map(this::getProjectData).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public ProjectData getProjectData(ProjectsTable projectsTable) {
|
||||
UsersTable projectOwner = userDao.get().getById(projectsTable.getOwnerId());
|
||||
if (projectOwner == null) {
|
||||
throw new ResponseStatusException(HttpStatus.NOT_FOUND);
|
||||
}
|
||||
int publicVersions = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user