Search in sources :

Example 6 with Users

use of com.walmartlabs.concord.server.jooq.tables.Users in project concord by walmartlabs.

the class ProjectDao method get.

public ProjectEntry get(DSLContext tx, UUID projectId) {
    Projects p = PROJECTS.as("p");
    Users u = USERS.as("u");
    Field<String> orgNameField = select(ORGANIZATIONS.ORG_NAME).from(ORGANIZATIONS).where(ORGANIZATIONS.ORG_ID.eq(p.ORG_ID)).asField();
    Record15<UUID, String, String, UUID, String, JSONB, String, UUID, String, String, String, String, RawPayloadMode, JSONB, OutVariablesMode> r = tx.select(p.PROJECT_ID, p.PROJECT_NAME, p.DESCRIPTION, p.ORG_ID, orgNameField, p.PROJECT_CFG, p.VISIBILITY, p.OWNER_ID, u.USERNAME, u.DOMAIN, u.USER_TYPE, u.DISPLAY_NAME, p.RAW_PAYLOAD_MODE, p.META, p.OUT_VARIABLES_MODE).from(p).leftJoin(u).on(u.USER_ID.eq(p.OWNER_ID)).where(p.PROJECT_ID.eq(projectId)).fetchOne();
    if (r == null) {
        return null;
    }
    Result<Record13<UUID, UUID, String, String, String, String, String, Boolean, JSONB, UUID, String, String, Boolean>> repos = tx.select(REPOSITORIES.REPO_ID, REPOSITORIES.PROJECT_ID, REPOSITORIES.REPO_NAME, REPOSITORIES.REPO_URL, REPOSITORIES.REPO_BRANCH, REPOSITORIES.REPO_COMMIT_ID, REPOSITORIES.REPO_PATH, REPOSITORIES.IS_DISABLED, REPOSITORIES.META, SECRETS.SECRET_ID, SECRETS.SECRET_NAME, SECRETS.STORE_TYPE, REPOSITORIES.IS_TRIGGERS_DISABLED).from(REPOSITORIES).leftOuterJoin(SECRETS).on(SECRETS.SECRET_ID.eq(REPOSITORIES.SECRET_ID)).where(REPOSITORIES.PROJECT_ID.eq(projectId)).fetch();
    Map<String, RepositoryEntry> m = new HashMap<>();
    for (Record13<UUID, UUID, String, String, String, String, String, Boolean, JSONB, UUID, String, String, Boolean> repo : repos) {
        m.put(repo.get(REPOSITORIES.REPO_NAME), new RepositoryEntry(repo.get(REPOSITORIES.REPO_ID), repo.get(REPOSITORIES.PROJECT_ID), repo.get(REPOSITORIES.REPO_NAME), repo.get(REPOSITORIES.REPO_URL), repo.get(REPOSITORIES.REPO_BRANCH), repo.get(REPOSITORIES.REPO_COMMIT_ID), repo.get(REPOSITORIES.REPO_PATH), repo.get(REPOSITORIES.IS_DISABLED), repo.get(SECRETS.SECRET_ID), repo.get(SECRETS.SECRET_NAME), repo.get(SECRETS.STORE_TYPE), objectMapper.fromJSONB(repo.get(REPOSITORIES.META)), repo.get(REPOSITORIES.IS_TRIGGERS_DISABLED)));
    }
    Map<String, Object> cfg = objectMapper.fromJSONB(r.get(p.PROJECT_CFG));
    return new ProjectEntry(projectId, r.get(p.PROJECT_NAME), r.get(p.DESCRIPTION), r.get(p.ORG_ID), r.get(orgNameField), m, cfg, ProjectVisibility.valueOf(r.get(p.VISIBILITY)), toOwner(r.get(p.OWNER_ID), r.get(u.USERNAME), r.get(u.DOMAIN), r.get(u.DISPLAY_NAME), r.get(u.USER_TYPE)), r.get(p.RAW_PAYLOAD_MODE) != RawPayloadMode.DISABLED, r.get(p.RAW_PAYLOAD_MODE), objectMapper.fromJSONB(r.get(p.META)), r.get(p.OUT_VARIABLES_MODE));
}
Also used : OutVariablesMode(com.walmartlabs.concord.server.jooq.enums.OutVariablesMode) Projects(com.walmartlabs.concord.server.jooq.tables.Projects) Users(com.walmartlabs.concord.server.jooq.tables.Users) RawPayloadMode(com.walmartlabs.concord.server.jooq.enums.RawPayloadMode)

Example 7 with Users

use of com.walmartlabs.concord.server.jooq.tables.Users in project concord by walmartlabs.

the class ProjectDao method list.

public List<ProjectEntry> list(UUID orgId, UUID currentUserId, Field<?> sortField, boolean asc, int offset, int limit, String filter) {
    Users u = USERS.as("u");
    Projects p = PROJECTS.as("p");
    Organizations o = ORGANIZATIONS.as("o");
    sortField = p.field(sortField);
    SelectOnConditionStep<Record13<UUID, String, String, UUID, String, String, UUID, String, String, String, String, RawPayloadMode, OutVariablesMode>> q = dsl().select(p.PROJECT_ID, p.PROJECT_NAME, p.DESCRIPTION, p.ORG_ID, o.ORG_NAME, p.VISIBILITY, p.OWNER_ID, u.USERNAME, u.DOMAIN, u.DISPLAY_NAME, u.USER_TYPE, p.RAW_PAYLOAD_MODE, p.OUT_VARIABLES_MODE).from(p).leftJoin(u).on(u.USER_ID.eq(p.OWNER_ID)).leftJoin(o).on(o.ORG_ID.eq(p.ORG_ID));
    if (currentUserId != null) {
        // public projects are visible for anyone
        Condition isPublic = p.VISIBILITY.eq(ProjectVisibility.PUBLIC.toString());
        // check if the user belongs to a team in the org
        SelectConditionStep<Record1<UUID>> teamIds = select(TEAMS.TEAM_ID).from(TEAMS).where(TEAMS.ORG_ID.eq(orgId));
        Condition isInATeam = exists(selectOne().from(V_USER_TEAMS).where(V_USER_TEAMS.USER_ID.eq(currentUserId).and(V_USER_TEAMS.TEAM_ID.in(teamIds))));
        // check if the user owns projects in the org
        Condition ownsProjects = p.OWNER_ID.eq(currentUserId);
        // check if the user owns the org
        Condition ownsOrg = o.OWNER_ID.eq(currentUserId);
        // if any of those conditions true then the project must be visible
        q.where(or(isPublic, isInATeam, ownsProjects, ownsOrg));
    }
    if (orgId != null) {
        q.where(p.ORG_ID.eq(orgId));
    }
    if (sortField != null) {
        q.orderBy(asc ? sortField.asc() : sortField.desc());
    }
    if (filter != null) {
        q.where(p.PROJECT_NAME.containsIgnoreCase(filter));
    }
    if (offset > 0) {
        q.offset(offset);
    }
    if (limit > 0) {
        q.limit(limit);
    }
    return q.fetch(ProjectDao::toEntry);
}
Also used : Organizations(com.walmartlabs.concord.server.jooq.tables.Organizations) Projects(com.walmartlabs.concord.server.jooq.tables.Projects) Users(com.walmartlabs.concord.server.jooq.tables.Users)

Example 8 with Users

use of com.walmartlabs.concord.server.jooq.tables.Users in project concord by walmartlabs.

the class SecretDao method list.

public List<SecretEntry> list(UUID orgId, UUID currentUserId, Field<?> sortField, boolean asc, int offset, int limit, String filter) {
    Organizations o = ORGANIZATIONS.as("o");
    Secrets s = SECRETS.as("s");
    Projects p = PROJECTS.as("p");
    Users u = USERS.as("u");
    sortField = s.field(sortField);
    SelectOnConditionStep<Record15<UUID, String, UUID, String, UUID, String, String, String, String, String, UUID, String, String, String, String>> q = selectEntry(dsl(), o, s, p, u);
    if (currentUserId != null) {
        // public secrets are visible for anyone
        Condition isPublic = s.VISIBILITY.eq(SecretVisibility.PUBLIC.toString());
        // check if the user belongs to a team in the org
        SelectConditionStep<Record1<UUID>> teamIds = select(TEAMS.TEAM_ID).from(TEAMS).where(TEAMS.ORG_ID.eq(orgId));
        Condition isInATeam = exists(selectOne().from(V_USER_TEAMS).where(V_USER_TEAMS.USER_ID.eq(currentUserId).and(V_USER_TEAMS.TEAM_ID.in(teamIds))));
        // check if the user owns secrets in the org
        Condition ownsSecrets = s.OWNER_ID.eq(currentUserId);
        // check if the user owns the org
        Condition ownsOrg = o.OWNER_ID.eq(currentUserId);
        // if any of those conditions true then the secret must be visible
        q.where(or(isPublic, isInATeam, ownsSecrets, ownsOrg));
    }
    if (orgId != null) {
        q.where(s.ORG_ID.eq(orgId));
    }
    if (filter != null) {
        q.where(s.SECRET_NAME.containsIgnoreCase(filter));
    }
    if (sortField != null) {
        q.orderBy(asc ? sortField.asc() : sortField.desc());
    }
    if (offset >= 0) {
        q.offset(offset);
    }
    if (limit > 0) {
        q.limit(limit);
    }
    return q.fetch(SecretDao::toEntry);
}
Also used : Secrets(com.walmartlabs.concord.server.jooq.tables.Secrets) Organizations(com.walmartlabs.concord.server.jooq.tables.Organizations) Projects(com.walmartlabs.concord.server.jooq.tables.Projects) Users(com.walmartlabs.concord.server.jooq.tables.Users)

Aggregations

Users (com.walmartlabs.concord.server.jooq.tables.Users)8 Organizations (com.walmartlabs.concord.server.jooq.tables.Organizations)6 Projects (com.walmartlabs.concord.server.jooq.tables.Projects)3 OutVariablesMode (com.walmartlabs.concord.server.jooq.enums.OutVariablesMode)1 RawPayloadMode (com.walmartlabs.concord.server.jooq.enums.RawPayloadMode)1 AuditLog (com.walmartlabs.concord.server.jooq.tables.AuditLog)1 JsonStores (com.walmartlabs.concord.server.jooq.tables.JsonStores)1 Secrets (com.walmartlabs.concord.server.jooq.tables.Secrets)1 OffsetDateTime (java.time.OffsetDateTime)1 UUID (java.util.UUID)1 Record9 (org.jooq.Record9)1