diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/Guild.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/Guild.java index f30c3dc319..25ea989ea2 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/Guild.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/Guild.java @@ -1,22 +1,28 @@ package com.objectcomputing.checkins.services.guild; +import io.micronaut.core.annotation.Nullable; import io.micronaut.data.annotation.AutoPopulated; import io.micronaut.data.annotation.TypeDef; import io.micronaut.data.jdbc.annotation.ColumnTransformer; import io.micronaut.data.model.DataType; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import javax.validation.constraints.NotBlank; -import io.micronaut.core.annotation.Nullable; - +import javax.validation.constraints.NotNull; import java.util.Objects; import java.util.UUID; @Entity +@Setter +@Getter +@NoArgsConstructor @Table(name = "guild") public class Guild { @Id @@ -35,7 +41,6 @@ public class Guild { @Schema(description = "name of the guild") private String name; - @Nullable @Column(name="link", unique=true) @ColumnTransformer( @@ -54,50 +59,21 @@ public class Guild { @Schema(description = "description of the guild") private String description; + @NotNull + @Column(name = "community") + @Schema(description = "Is the guild a community") + private boolean community; - - public Guild(String name, String description, @Nullable String link) { - this(null, name, description, link); - } - - public Guild(UUID id, String name, String description, @Nullable String link) { - this.id = id; - this.name = name; - this.description = description; - this.link = link; - } - - public UUID getId() { - return id; + public Guild(String name, String description, @Nullable String link, boolean community) { + this(null, name, description, link, community); } - public void setId(UUID id) { + public Guild(UUID id, String name, String description, @Nullable String link, boolean community) { this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { this.description = description; - } - - @Nullable - public String getLink() { - return this.link; - } - - public void setLink(String link) { this.link = link; + this.community = community; } @Override @@ -108,13 +84,14 @@ public boolean equals(Object o) { return Objects.equals(id, guild.id) && Objects.equals(name, guild.name) && Objects.equals(description, guild.description) && - Objects.equals(link, this.link); + Objects.equals(link, guild.link) && + Objects.equals(community, guild.community); } @Override public int hashCode() { - return Objects.hash(id, name, description, link); + return Objects.hash(id, name, description, link, community); } @Override @@ -124,6 +101,7 @@ public String toString() { ", name='" + name + '\'' + ", description='" + description + '\'' + ", link='" + link + + ", community=" + community + '}'; } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java index 1197de5324..ac1aafc47d 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildController.java @@ -1,5 +1,6 @@ package com.objectcomputing.checkins.services.guild; +import io.micronaut.core.annotation.Nullable; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import io.micronaut.http.MediaType; @@ -9,8 +10,6 @@ import io.micronaut.security.rules.SecurityRule; import io.netty.channel.EventLoopGroup; import io.swagger.v3.oas.annotations.tags.Tag; - -import io.micronaut.core.annotation.Nullable; import jakarta.inject.Named; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; @@ -30,8 +29,8 @@ @Tag(name = "guilds") public class GuildController { - private GuildServices guildService; - private EventLoopGroup eventLoopGroup; + private final GuildServices guildService; + private final EventLoopGroup eventLoopGroup; private final Scheduler scheduler; public GuildController(GuildServices guildService, @@ -78,14 +77,14 @@ public Mono> readGuild(@NotNull UUID id) { * Find guild(s) given a combination of the following parameters * * @param name, name of the guild - * @param memberid, {@link UUID} of the member you wish to inquire in to which guilds they are a part of + * @param memberId, {@link UUID} of the member you wish to inquire in to which guilds they are a part of * @return {@link List < GuildResponseDTO > list of guilds}, return all guilds when no parameters filled in else - * return all guilds that match all of the filled in params + * return all guilds that match the filled in params */ @Get("/{?name,memberid}") - public Mono>> findGuilds(@Nullable String name, @Nullable UUID memberid) { - return Mono.fromCallable(() -> guildService.findByFields(name, memberid)) + public Mono>> findGuilds(@Nullable String name, @Nullable UUID memberId) { + return Mono.fromCallable(() -> guildService.findByFields(name, memberId)) .publishOn(Schedulers.fromExecutor(eventLoopGroup)) .map(guilds -> (HttpResponse>) HttpResponse.ok(guilds)) .subscribeOn(scheduler); @@ -95,16 +94,15 @@ public Mono>> findGuilds(@Nullable String nam * Update guild. * * @param guild, {@link GuildUpdateDTO} - * @return {@link HttpResponse< GuildResponseDTO >} + * @return {@link HttpResponse} */ @Put() public Mono> update(@Body @Valid GuildUpdateDTO guild, HttpRequest request) { return Mono.fromCallable(() -> guildService.update(guild)) .publishOn(Schedulers.fromExecutor(eventLoopGroup)) .map(updated -> (HttpResponse) HttpResponse - .ok() - .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getUri(), guild.getId())))) - .body(updated)) + .ok(updated) + .headers(headers -> headers.location(URI.create(String.format("%s/%s", request.getUri(), guild.getId()))))) .subscribeOn(scheduler); } @@ -113,13 +111,13 @@ public Mono> update(@Body @Valid GuildUpdateDTO g * Delete Guild * * @param id, id of {@link GuildUpdateDTO} to delete - * @return + * @return http ok response */ @Delete("/{id}") - public Mono deleteGuild(@NotNull UUID id) { + public Mono> deleteGuild(@NotNull UUID id) { return Mono.fromCallable(() -> guildService.delete(id)) .publishOn(Schedulers.fromExecutor(eventLoopGroup)) - .map(success -> (HttpResponse) HttpResponse.ok()) + .map(success -> (HttpResponse) HttpResponse.ok()) .subscribeOn(scheduler); } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildCreateDTO.java index 8a6ac7320c..5e86795bfc 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildCreateDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildCreateDTO.java @@ -1,17 +1,22 @@ package com.objectcomputing.checkins.services.guild; import io.micronaut.core.annotation.Introspected; +import io.micronaut.core.annotation.Nullable; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.Setter; -import io.micronaut.core.annotation.Nullable; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.List; -import java.util.Objects; import java.util.UUID; +@Data +@NoArgsConstructor @Introspected public class GuildCreateDTO { + @Setter @NotBlank @Schema(required = true, description = "name of the guild") private String name; @@ -26,65 +31,20 @@ public class GuildCreateDTO { @Nullable @Schema(description="link to the homepage of the guild") private String link; - - - public GuildCreateDTO(String name, @Nullable String description, @Nullable String link) { - this.name = name; - this.description = description; - this.link =link; - } - - public GuildCreateDTO() { - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - com.objectcomputing.checkins.services.guild.GuildCreateDTO that = (com.objectcomputing.checkins.services.guild.GuildCreateDTO) o; - return Objects.equals(name, that.name) && - Objects.equals(description, that.description) && Objects.equals(link, that.link); - } - - @Override - public int hashCode() { - return Objects.hash(name, description); - } - - public List getGuildMembers() { - return guildMembers; - } - public void setGuildMembers(List guildMembers) { - this.guildMembers = guildMembers; - } - - public String getName() { - return name; - } + @NotNull + @Schema(description = "Is the guild a community") + private boolean community; - public void setName(String name) { + public GuildCreateDTO(String name, @Nullable String description, @Nullable String link, boolean community) { this.name = name; - } - - @Nullable - public String getDescription() { - return description; - } - - public void setDescription(@Nullable String description) { this.description = description; + this.link =link; + this.community = community; } - @Nullable - public String getLink() { - return this.link; - } - - public void setLink(String link) { - this.link = link; - } - + @Data + @NoArgsConstructor @Introspected public static class GuildMemberCreateDTO { @@ -100,21 +60,5 @@ public GuildMemberCreateDTO(UUID memberId, Boolean lead) { this.memberId = memberId; this.lead = lead; } - - public Boolean getLead() { - return lead; - } - - public void setLead(Boolean lead) { - this.lead = lead; - } - - public UUID getMemberId() { - return memberId; - } - - public void setMemberId(UUID memberId) { - this.memberId = memberId; - } } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildRepository.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildRepository.java index 25e5ea3aab..199e05f6a4 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildRepository.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildRepository.java @@ -1,12 +1,12 @@ package com.objectcomputing.checkins.services.guild; +import io.micronaut.core.annotation.NonNull; +import io.micronaut.core.annotation.Nullable; import io.micronaut.data.annotation.Query; import io.micronaut.data.jdbc.annotation.JdbcRepository; import io.micronaut.data.model.query.builder.sql.Dialect; import io.micronaut.data.repository.CrudRepository; -import io.micronaut.core.annotation.NonNull; -import io.micronaut.core.annotation.Nullable; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; @@ -26,7 +26,10 @@ public interface GuildRepository extends CrudRepository { @Override S save(@Valid @NotNull @NonNull S entity); - @Query(value = "SELECT t_.id, PGP_SYM_DECRYPT(cast(t_.name as bytea),'${aes.key}') as name, PGP_SYM_DECRYPT(cast(description as bytea),'${aes.key}') as description, PGP_SYM_DECRYPT(cast(link as bytea),'${aes.key}') as link " + + @Query(value = "SELECT t_.id, PGP_SYM_DECRYPT(cast(t_.name as bytea),'${aes.key}') as name, " + + "PGP_SYM_DECRYPT(cast(description as bytea),'${aes.key}') as description, " + + "PGP_SYM_DECRYPT(cast(link as bytea),'${aes.key}') as link, " + + "t_.community as community " + "FROM guild t_ " + "LEFT JOIN guild_member tm_ " + " ON t_.id = tm_.guildid " + diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildResponseDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildResponseDTO.java index e061129fc3..8c010fffd7 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildResponseDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildResponseDTO.java @@ -1,16 +1,21 @@ package com.objectcomputing.checkins.services.guild; import com.objectcomputing.checkins.services.guild.member.GuildMemberResponseDTO; +import io.micronaut.core.annotation.Introspected; +import io.micronaut.core.annotation.Nullable; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; -import io.micronaut.core.annotation.Nullable; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.UUID; +@Data +@NoArgsConstructor +@Introspected public class GuildResponseDTO { @NotNull @@ -24,52 +29,23 @@ public class GuildResponseDTO { @Schema(description = "description of the guild") private String description; + @Schema(description = "members of this guild") + private List guildMembers; + @Nullable @Schema(description="link to the homepage of the guild") private String link; + @NotNull + @Schema(description = "Is the guild a community") + private boolean community; - List guildMembers; - - public GuildResponseDTO(UUID id, String name, @Nullable String description, @Nullable String link) { + public GuildResponseDTO(UUID id, String name, @Nullable String description, @Nullable String link, boolean community) { this.id = id; this.name = name; this.description = description; this.link = link; - } - - public GuildResponseDTO(String id, String name, @Nullable String description, @Nullable String link) { - this(UUID.fromString(id), name, description, link); - } - - public GuildResponseDTO() { - id = UUID.randomUUID(); - } - - @Override - public String toString() { - return "GuildResponseDTO{" + - "id=" + id + - ", name='" + name + '\'' + - ", description='" + description + '\'' + - ", link='" + link + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - GuildResponseDTO that = (GuildResponseDTO) o; - return Objects.equals(id, that.id) && - Objects.equals(name, that.name) && - Objects.equals(description, that.description) && - Objects.equals(link, that.link); - } - - @Override - public int hashCode() { - return Objects.hash(id, name, description,link ); + this.community = community; } public List getGuildMembers() { @@ -78,42 +54,4 @@ public List getGuildMembers() { } return guildMembers; } - - public void setGuildMembers(List guildMembers) { - this.guildMembers = guildMembers; - } - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Nullable - public String getLink() { - return this.link; - } - - public void setLink(String link) { - this.link = link; - } - - @Nullable - public String getDescription() { - return description; - } - - public void setDescription(@Nullable String description) { - this.description = description; - } } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServices.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServices.java index 799da79207..443e821cbe 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServices.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServices.java @@ -6,11 +6,11 @@ public interface GuildServices { GuildResponseDTO read(UUID id); - GuildResponseDTO save(GuildCreateDTO g); + GuildResponseDTO save(GuildCreateDTO guild); - GuildResponseDTO update(GuildUpdateDTO g); + GuildResponseDTO update(GuildUpdateDTO guild); - Set findByFields(String name, UUID memberid); + Set findByFields(String name, UUID memberId); boolean delete(UUID id); } diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java index e68449fd8e..31bcc7c898 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildServicesImpl.java @@ -6,7 +6,10 @@ import com.objectcomputing.checkins.exceptions.PermissionException; import com.objectcomputing.checkins.notifications.email.EmailSender; import com.objectcomputing.checkins.notifications.email.MailJetConfig; -import com.objectcomputing.checkins.services.guild.member.*; +import com.objectcomputing.checkins.services.guild.member.GuildMember; +import com.objectcomputing.checkins.services.guild.member.GuildMemberRepository; +import com.objectcomputing.checkins.services.guild.member.GuildMemberResponseDTO; +import com.objectcomputing.checkins.services.guild.member.GuildMemberServices; import com.objectcomputing.checkins.services.memberprofile.MemberProfile; import com.objectcomputing.checkins.services.memberprofile.MemberProfileServices; import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; @@ -14,6 +17,7 @@ import io.micronaut.context.env.Environment; import jakarta.inject.Named; import jakarta.inject.Singleton; + import javax.validation.constraints.NotNull; import java.net.URL; import java.time.LocalDate; @@ -179,8 +183,8 @@ public GuildResponseDTO update(GuildUpdateDTO guildDTO) { } - public Set findByFields(String name, UUID memberid) { - Set foundGuilds = guildsRepo.search(name, nullSafeUUIDToString(memberid)).stream().map(this::fromEntity).collect(Collectors.toSet()); + public Set findByFields(String name, UUID memberId) { + Set foundGuilds = guildsRepo.search(name, nullSafeUUIDToString(memberId)).stream().map(this::fromEntity).collect(Collectors.toSet()); //TODO: revisit this in a way that will allow joins. for (GuildResponseDTO foundGuild : foundGuilds) { Set foundMembers = guildMemberRepo.findByGuildId(foundGuild.getId()).stream().filter(guildMember -> { @@ -212,7 +216,7 @@ private Guild fromDTO(GuildUpdateDTO dto) { if (dto == null) { return null; } - return new Guild(dto.getId(), dto.getName(), dto.getDescription(), dto.getLink()); + return new Guild(dto.getId(), dto.getName(), dto.getDescription(), dto.getLink(), dto.isCommunity()); } private GuildMember fromMemberDTO(GuildCreateDTO.GuildMemberCreateDTO memberDTO, UUID guildId) { @@ -235,7 +239,8 @@ private GuildResponseDTO fromEntity(Guild entity, List m if (entity == null) { return null; } - GuildResponseDTO dto = new GuildResponseDTO(entity.getId(), entity.getName(), entity.getDescription(), entity.getLink()); + GuildResponseDTO dto = new GuildResponseDTO(entity.getId(), entity.getName(), entity.getDescription(), + entity.getLink(), entity.isCommunity()); dto.setGuildMembers(memberEntities); return dto; } @@ -244,7 +249,7 @@ private Guild fromDTO(GuildCreateDTO dto) { if (dto == null) { return null; } - return new Guild(null, dto.getName(), dto.getDescription(), dto.getLink()); + return new Guild(null, dto.getName(), dto.getDescription(), dto.getLink(), dto.isCommunity()); } private GuildMemberResponseDTO fromMemberEntity(GuildMember guildMember, MemberProfile memberProfile) { diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildUpdateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildUpdateDTO.java index 6b4a96519c..a3e185923d 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildUpdateDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/GuildUpdateDTO.java @@ -1,19 +1,19 @@ package com.objectcomputing.checkins.services.guild; -import com.objectcomputing.checkins.services.guild.member.GuildMemberResponseDTO; -import com.objectcomputing.checkins.services.guild.member.GuildMemberUpdateDTO; import io.micronaut.core.annotation.Introspected; +import io.micronaut.core.annotation.Nullable; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; -import io.micronaut.core.annotation.Nullable; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.List; -import java.util.Objects; import java.util.UUID; import static com.objectcomputing.checkins.util.Util.nullSafeUUIDFromString; +@Data @Introspected public class GuildUpdateDTO { @NotNull @@ -34,90 +34,27 @@ public class GuildUpdateDTO { @Schema(description = "members of this guild") private List guildMembers; + @Schema(description = "Is the guild a community") + private boolean community; - public GuildUpdateDTO(UUID id, String name, @Nullable String description, @Nullable String link) { + public GuildUpdateDTO(UUID id, String name, @Nullable String description, @Nullable String link, boolean community) { this.id = id; this.name = name; this.description = description; this.link = link; + this.community = community; } - public GuildUpdateDTO(String id, String name, String description, @Nullable String link) { - this(nullSafeUUIDFromString(id), name, description, link); + public GuildUpdateDTO(String id, String name, String description, @Nullable String link, Boolean isCommunity) { + this(nullSafeUUIDFromString(id), name, description, link, isCommunity); } public GuildUpdateDTO() { id = UUID.randomUUID(); } - @Override - public String toString() { - return "GuildUpdateDTO{" + - "id=" + id + - ", name='" + name + '\'' + - ", description='" + description + '\'' + - ", link='" + link+ '\'' + - '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - com.objectcomputing.checkins.services.guild.GuildUpdateDTO updateDTO = (com.objectcomputing.checkins.services.guild.GuildUpdateDTO) o; - return Objects.equals(id, updateDTO.id) && - Objects.equals(name, updateDTO.name) && - Objects.equals(description, updateDTO.description) && - Objects.equals(link, updateDTO.link); - } - - @Override - public int hashCode() { - return Objects.hash(id, name, description,link); - } - - public List getGuildMembers() { - return guildMembers; - } - - public void setGuildMembers(List guildMembers) { - this.guildMembers = guildMembers; - } - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Nullable - public String getLink() { - return this.link; - } - - public void setLink(String link) { - this.link = link; - } - - @Nullable - public String getDescription() { - return description; - } - - public void setDescription(@Nullable String description) { - this.description = description; - } - + @Data + @NoArgsConstructor @Introspected public static class GuildMemberUpdateDTO { @@ -137,29 +74,5 @@ public GuildMemberUpdateDTO(UUID id, UUID memberId, Boolean lead) { this.memberId = memberId; this.lead = lead; } - - public UUID getId() { - return id; - } - - public void setId(UUID id) { - this.id = id; - } - - public Boolean getLead() { - return lead; - } - - public void setLead(Boolean lead) { - this.lead = lead; - } - - public UUID getMemberId() { - return memberId; - } - - public void setMemberId(UUID memberid) { - this.memberId = memberid; - } } } \ No newline at end of file diff --git a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMember.java b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMember.java index 61528d7b77..55bce1f992 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMember.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/guild/member/GuildMember.java @@ -1,11 +1,13 @@ package com.objectcomputing.checkins.services.guild.member; +import io.micronaut.core.annotation.Introspected; +import io.micronaut.core.annotation.Nullable; import io.micronaut.data.annotation.AutoPopulated; import io.micronaut.data.annotation.TypeDef; import io.micronaut.data.model.DataType; import io.swagger.v3.oas.annotations.media.Schema; -import io.micronaut.core.annotation.Introspected; -import io.micronaut.core.annotation.Nullable; +import lombok.NoArgsConstructor; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; @@ -15,6 +17,7 @@ import java.util.UUID; @Entity +@NoArgsConstructor @Introspected @Table(name = "guild_member") public class GuildMember { diff --git a/server/src/main/resources/db/common/V100__alter_guild_table_add_community_boolean.sql b/server/src/main/resources/db/common/V100__alter_guild_table_add_community_boolean.sql new file mode 100644 index 0000000000..4db102e57d --- /dev/null +++ b/server/src/main/resources/db/common/V100__alter_guild_table_add_community_boolean.sql @@ -0,0 +1 @@ +ALTER TABLE guild ADD COLUMN community boolean DEFAULT false NOT NULL; \ No newline at end of file diff --git a/server/src/test/java/com/objectcomputing/checkins/services/fixture/GuildFixture.java b/server/src/test/java/com/objectcomputing/checkins/services/fixture/GuildFixture.java index a1a02ce31e..80c191dbf9 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/fixture/GuildFixture.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/fixture/GuildFixture.java @@ -12,27 +12,27 @@ public interface GuildFixture extends MemberProfileFixture, RepositoryFixture{ String COMPASS_ADDRESS = "https://www.compass.objectcomputing.com/"; default Guild createDefaultGuild() { - return getGuildRepository().save(new Guild(UUID.randomUUID(), "Ninja", "Warriors", COMPASS_ADDRESS+"ninja_warriors/")); + return getGuildRepository().save(new Guild(UUID.randomUUID(), "Ninja", "Warriors", COMPASS_ADDRESS+"ninja_warriors/", false)); } default Guild createAnotherDefaultGuild() { - return getGuildRepository().save(new Guild(UUID.randomUUID(), "Coding", "Warriors", COMPASS_ADDRESS+"coding_warriors/")); + return getGuildRepository().save(new Guild(UUID.randomUUID(), "Coding", "Warriors", COMPASS_ADDRESS+"coding_warriors/", false)); } default GuildCreateDTO createFromEntity(Guild entity) { - return new GuildCreateDTO(entity.getName(), entity.getDescription(), entity.getLink()); + return new GuildCreateDTO(entity.getName(), entity.getDescription(), entity.getLink(), false); } default GuildUpdateDTO updateFromEntity(Guild entity) { - return new GuildUpdateDTO(entity.getId(), entity.getName(), entity.getDescription(),entity.getLink()); + return new GuildUpdateDTO(entity.getId(), entity.getName(), entity.getDescription(),entity.getLink(), entity.isCommunity()); } default GuildResponseDTO responseFromEntity(Guild entity) { - return new GuildResponseDTO(entity.getId(), entity.getName(), entity.getDescription(),entity.getLink()); + return new GuildResponseDTO(entity.getId(), entity.getName(), entity.getDescription(),entity.getLink(), entity.isCommunity()); } default Guild entityFromDTO(GuildUpdateDTO dto) { - return new Guild(dto.getId(), dto.getName(), dto.getDescription(),dto.getLink()); + return new Guild(dto.getId(), dto.getName(), dto.getDescription(),dto.getLink(), dto.isCommunity()); } } diff --git a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java index a2ec663d36..4558b04dcd 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java @@ -18,18 +18,18 @@ import io.micronaut.http.client.HttpClient; import io.micronaut.http.client.annotation.Client; import io.micronaut.http.client.exceptions.HttpClientResponseException; +import jakarta.inject.Inject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; import org.mockito.Mockito; -import jakarta.inject.Inject; import java.util.*; import static com.objectcomputing.checkins.services.role.RoleType.Constants.*; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; class GuildControllerTest extends TestContainersSuite implements GuildFixture, MemberProfileFixture, RoleFixture, GuildMemberFixture { @@ -123,12 +123,13 @@ void testCreateAGuild() { guildCreateDTO.setDescription("description"); guildCreateDTO.setLink("https://www.compass.objectcomputing.com/guilds/name"); guildCreateDTO.setGuildMembers(List.of(createDefaultGuildMemberDto(createADefaultMemberProfile(), true))); + guildCreateDTO.setCommunity(false); final HttpRequest request = HttpRequest.POST("", guildCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); final HttpResponse response = client.toBlocking().exchange(request, GuildResponseDTO.class); - GuildResponseDTO guildEntity = response.body(); - + assertTrue(response.getBody().isPresent()); + GuildResponseDTO guildEntity = response.getBody().get(); assertEquals(guildCreateDTO.getDescription(), guildEntity.getDescription()); assertEquals(guildCreateDTO.getName(), guildEntity.getName()); assertEquals(HttpStatus.CREATED, response.getStatus()); @@ -143,6 +144,7 @@ void testCreateGuildFakeLink() { guildCreateDTO.setDescription("description"); guildCreateDTO.setLink("wwwu.fakelink.com"); guildCreateDTO.setGuildMembers(List.of(createDefaultGuildMemberDto(createADefaultMemberProfile(), true))); + guildCreateDTO.setCommunity(false); final HttpRequest request = HttpRequest.POST("", guildCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, @@ -164,6 +166,8 @@ void testCreateGuildNoLeads() { guildCreateDTO.setDescription("description"); guildCreateDTO.setLink("https://www.compass.objectcomputing.com/guilds/name"); guildCreateDTO.setGuildMembers(new ArrayList<>()); + guildCreateDTO.setCommunity(false); + final HttpRequest request = HttpRequest.POST("", guildCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, @@ -181,6 +185,7 @@ void testCreateGuildNoLeads() { @Test void testCreateAnInvalidGuild() { GuildCreateDTO guildCreateDTO = new GuildCreateDTO(); + guildCreateDTO.setCommunity(false); final HttpRequest request = HttpRequest.POST("", guildCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, @@ -220,6 +225,7 @@ void testCreateAGuildWithExistingName() { guildCreateDTO.setLink("https://www.compass.objectcomputing.com/guilds/name"); guildCreateDTO.setGuildMembers(new ArrayList<>()); guildCreateDTO.setGuildMembers(List.of(createDefaultGuildMemberDto(createADefaultMemberProfile(), true))); + guildCreateDTO.setCommunity(false); final HttpRequest request = HttpRequest.POST("", guildCreateDTO).basicAuth(MEMBER_ROLE, MEMBER_ROLE); HttpClientResponseException responseException = assertThrows(HttpClientResponseException.class, @@ -256,7 +262,7 @@ void testFindAllGuilds() { Guild guildEntity = createDefaultGuild(); - final HttpRequest request = HttpRequest.GET(String.format("/")).basicAuth(MEMBER_ROLE, MEMBER_ROLE); + final HttpRequest request = HttpRequest.GET("/").basicAuth(MEMBER_ROLE, MEMBER_ROLE); final HttpResponse> response = client.toBlocking().exchange(request, Argument.setOf(GuildResponseDTO.class)); assertEntityDTOEqual(Set.of(guildEntity), response.body()); @@ -380,7 +386,7 @@ void testUpdateGuildWithExistingMembers() { void testUpdateGuildNullName() { Guild guildEntity = createDefaultGuild(); - GuildUpdateDTO requestBody = new GuildUpdateDTO(guildEntity.getId(), null, null,null); + GuildUpdateDTO requestBody = new GuildUpdateDTO(guildEntity.getId(), null, null,null, false); requestBody.setGuildMembers(new ArrayList<>()); final HttpRequest request = HttpRequest.PUT("", requestBody) @@ -415,7 +421,8 @@ void testUpdateANullGuild() { void testUpdateGuildNotExist() { Guild guildEntity = createDefaultGuild(); UUID requestId = UUID.randomUUID(); - GuildUpdateDTO requestBody = new GuildUpdateDTO(requestId.toString(), guildEntity.getName(), guildEntity.getDescription(), guildEntity.getLink()); + GuildUpdateDTO requestBody = new GuildUpdateDTO(requestId.toString(), guildEntity.getName(), + guildEntity.getDescription(), guildEntity.getLink(), guildEntity.isCommunity()); requestBody.setGuildMembers(new ArrayList<>()); MemberProfile memberProfileOfAdmin = createAnUnrelatedUser(); diff --git a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildCreateDTOTest.java b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildCreateDTOTest.java index 51db0a6e47..10e8cc7f4c 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildCreateDTOTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildCreateDTOTest.java @@ -2,10 +2,10 @@ import io.micronaut.test.extensions.junit5.annotation.MicronautTest; import io.micronaut.validation.validator.Validator; +import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; -import jakarta.inject.Inject; import javax.validation.ConstraintViolation; import java.util.Set; @@ -27,10 +27,10 @@ void testDTOInstantiation() { } @Test - void testConstraintViolation() { + void testConstraintViolationName() { GuildCreateDTO dto = new GuildCreateDTO(); - dto.setName(""); + dto.setCommunity(false); Set> violations = validator.validate(dto); assertEquals(1, violations.size()); @@ -43,13 +43,9 @@ void testConstraintViolation() { void testPopulatedDTO() { GuildCreateDTO dto = new GuildCreateDTO(); - final String name = "Melt man"; - dto.setName(name); - assertEquals(dto.getName(), name); - - final String description = "with the power to melt"; - dto.setDescription(description); - assertEquals(dto.getDescription(), description); + dto.setName("Melt man"); + dto.setCommunity(false); + dto.setDescription("with the power to melt"); Set> violations = validator.validate(dto); assertTrue(violations.isEmpty()); diff --git a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java index 9bb287ab0b..cedd1b9e83 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java @@ -2,10 +2,10 @@ import io.micronaut.test.extensions.junit5.annotation.MicronautTest; import io.micronaut.validation.validator.Validator; +import jakarta.inject.Inject; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; -import jakarta.inject.Inject; import javax.validation.ConstraintViolation; import java.util.HashMap; import java.util.Set; @@ -25,7 +25,7 @@ class GuildTest { void testGuildInstantiation() { final String name = "name"; final String description = "description"; - Guild guild = new Guild(name, description, null); + Guild guild = new Guild(name, description, null, false); assertEquals(guild.getName(), name); assertEquals(guild.getDescription(), description); } @@ -36,7 +36,7 @@ void testGuildInstantiation2() { final String name = "name"; final String description = "description"; final String link = "https://www.compass.objectcomputing.com/guilds/name"; - Guild guild = new Guild(id, name, description, link); + Guild guild = new Guild(id, name, description, link, false); assertEquals(guild.getId(), id); assertEquals(guild.getName(), name); assertEquals(guild.getDescription(), description); @@ -51,7 +51,7 @@ void testConstraintViolation() { final UUID id = UUID.randomUUID(); final String name = "name"; final String description = "description"; - Guild guild = new Guild(id, name, description, null); + Guild guild = new Guild(id, name, description, null, false); guild.setName(""); guild.setDescription(""); @@ -69,8 +69,8 @@ void testEquals() { final String name = "name"; final String description = "description"; final String link = "https://www.compass.objectcomputing.com/guilds/name"; - Guild g = new Guild(id, name, description, link); - Guild g2 = new Guild(id, name, description, link); + Guild g = new Guild(id, name, description, link, false); + Guild g2 = new Guild(id, name, description, link, false); assertEquals(g, g2); @@ -86,7 +86,7 @@ void testHash() { final String name = "name"; final String description = "description"; final String link = "https://www.compass.objectcomputing.com/guilds/name"; - Guild g = new Guild(id, name, description, link); + Guild g = new Guild(id, name, description, link, false); map.put(g, true); @@ -99,10 +99,13 @@ void testToString() { final String name = "name------name"; final String description = "description------description"; final String link = "https://www.compass.objectcomputing.com/guilds/name"; - Guild g = new Guild(id, name, description,link); - - assertTrue(g.toString().contains(name)); - assertTrue(g.toString().contains(id.toString())); - assertTrue(g.toString().contains(description)); + final String isCommunity = "false"; + Guild g = new Guild(id, name, description,link, false); + + String s = g.toString(); + assertTrue(s.contains(name)); + assertTrue(s.contains(id.toString())); + assertTrue(s.contains(description)); + assertTrue(s.contains(isCommunity)); } } diff --git a/web-ui/.prettierrc b/web-ui/.prettierrc index 17e152d43a..b26242a241 100644 --- a/web-ui/.prettierrc +++ b/web-ui/.prettierrc @@ -1,5 +1,6 @@ { "arrowParens": "avoid", "singleQuote": true, - "trailingComma": "none" + "trailingComma": "none", + "endOfLine": "auto" }