// Path: identity-service/src/main/java/eu/nimble/core/infrastructure/identity/entity/UaaUser.java
// @Entity
// public class UaaUser implements Serializable {
// 
//     @Id
//     @Column(nullable = false, unique = true)
//     private String externalID;
// 
//     private String username;
// 
//     @OneToOne
//     private PersonType ublPerson;
// 
//     @ColumnDefault("false")
//     private Boolean showWelcomeInfo = false;
// 
//     public UaaUser() {
//     }
// 
//     public UaaUser(String username, PersonType ublPerson, String externalID) {
//         this.username = username;
//         this.ublPerson = ublPerson;
//         this.externalID = externalID;
//         this.showWelcomeInfo = true;
//     }
// 
//     public String getUsername() {
//         return username;
//     }
// 
//     public String getExternalID() {
//         return externalID;
//     }
// 
//     public PersonType getUBLPerson() {
//         return this.ublPerson;
//     }
// 
//     public Boolean getShowWelcomeInfo() {
//         return showWelcomeInfo;
//     }
// 
//     public void setShowWelcomeInfo(Boolean showWelcomeInfo) {
//         this.showWelcomeInfo = showWelcomeInfo;
//     }
// }
// 
// Path: identity-service/src/main/java/eu/nimble/core/infrastructure/identity/entity/UserInvitation.java
// @Entity
// @Table(uniqueConstraints = {
//         @UniqueConstraint(columnNames = {"email", "companyId"})
// })
// public class UserInvitation {
// 
//     @Id
//     @JsonIgnore
//     @GeneratedValue
//     long id;
// 
//     @Email
//     @NotBlank
//     @JsonProperty(required = true)
//     private String email;
// 
//     @NotBlank
//     @JsonProperty(required = true)
//     private String companyId;
// 
//     @Column
//     @ElementCollection(targetClass = String.class)
//     private List<String> roleIDs;
// 
//     @ManyToOne
//     @JsonIgnore
//     private UaaUser sender;
// 
//     private Boolean isPending;
// 
//     protected UserInvitation() {
//         // no-args constructor required by JPA spec
//         // this one is protected since it shouldn't be used directly
//     }
// 
//     public UserInvitation(String email, String companyId, List<String> roleIDs, UaaUser sender) {
//         this(email, companyId, roleIDs, sender, true);
//     }
// 
//     public UserInvitation(String email, String companyId, List<String> roleIDs, UaaUser sender, Boolean isPending) {
//         this.email = email;
//         this.companyId = companyId;
//         this.sender = sender;
//         this.roleIDs = roleIDs;
// 
//         this.isPending = isPending;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getCompanyId() {
//         return companyId;
//     }
// 
//     public void setCompanyId(String companyId) {
//         this.companyId = companyId;
//     }
// 
//     public List<String> getRoleIDs() {
//         return roleIDs;
//     }
// 
//     public void setRoleIDs(List<String> roleIDs) {
//         this.roleIDs = roleIDs;
//     }
// 
//     public UaaUser getSender() {
//         return sender;
//     }
// 
//     public void setSender(UaaUser sender) {
//         this.sender = sender;
//     }
// 
//     public Boolean getPending() {
//         return isPending;
//     }
// 
//     public void setPending(Boolean pending) {
//         isPending = pending;
//     }
// }


import eu.nimble.core.infrastructure.identity.entity.UaaUser;
import eu.nimble.core.infrastructure.identity.entity.UserInvitation;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
package eu.nimble.core.infrastructure.identity.repository;



@SuppressWarnings("unused")
public interface UserInvitationRepository extends PagingAndSortingRepository<UserInvitation, Long> {
    Page<UserInvitation> findAll(Pageable pageable);

    List<UserInvitation> findByEmail(String email);

    List<UserInvitation> findByCompanyId(String companyId);

// Path: identity-service/src/main/java/eu/nimble/core/infrastructure/identity/entity/UaaUser.java
// @Entity
// public class UaaUser implements Serializable {
// 
//     @Id
//     @Column(nullable = false, unique = true)
//     private String externalID;
// 
//     private String username;
// 
//     @OneToOne
//     private PersonType ublPerson;
// 
//     @ColumnDefault("false")
//     private Boolean showWelcomeInfo = false;
// 
//     public UaaUser() {
//     }
// 
//     public UaaUser(String username, PersonType ublPerson, String externalID) {
//         this.username = username;
//         this.ublPerson = ublPerson;
//         this.externalID = externalID;
//         this.showWelcomeInfo = true;
//     }
// 
//     public String getUsername() {
//         return username;
//     }
// 
//     public String getExternalID() {
//         return externalID;
//     }
// 
//     public PersonType getUBLPerson() {
//         return this.ublPerson;
//     }
// 
//     public Boolean getShowWelcomeInfo() {
//         return showWelcomeInfo;
//     }
// 
//     public void setShowWelcomeInfo(Boolean showWelcomeInfo) {
//         this.showWelcomeInfo = showWelcomeInfo;
//     }
// }
// 
// Path: identity-service/src/main/java/eu/nimble/core/infrastructure/identity/entity/UserInvitation.java
// @Entity
// @Table(uniqueConstraints = {
//         @UniqueConstraint(columnNames = {"email", "companyId"})
// })
// public class UserInvitation {
// 
//     @Id
//     @JsonIgnore
//     @GeneratedValue
//     long id;
// 
//     @Email
//     @NotBlank
//     @JsonProperty(required = true)
//     private String email;
// 
//     @NotBlank
//     @JsonProperty(required = true)
//     private String companyId;
// 
//     @Column
//     @ElementCollection(targetClass = String.class)
//     private List<String> roleIDs;
// 
//     @ManyToOne
//     @JsonIgnore
//     private UaaUser sender;
// 
//     private Boolean isPending;
// 
//     protected UserInvitation() {
//         // no-args constructor required by JPA spec
//         // this one is protected since it shouldn't be used directly
//     }
// 
//     public UserInvitation(String email, String companyId, List<String> roleIDs, UaaUser sender) {
//         this(email, companyId, roleIDs, sender, true);
//     }
// 
//     public UserInvitation(String email, String companyId, List<String> roleIDs, UaaUser sender, Boolean isPending) {
//         this.email = email;
//         this.companyId = companyId;
//         this.sender = sender;
//         this.roleIDs = roleIDs;
// 
//         this.isPending = isPending;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getCompanyId() {
//         return companyId;
//     }
// 
//     public void setCompanyId(String companyId) {
//         this.companyId = companyId;
//     }
// 
//     public List<String> getRoleIDs() {
//         return roleIDs;
//     }
// 
//     public void setRoleIDs(List<String> roleIDs) {
//         this.roleIDs = roleIDs;
//     }
// 
//     public UaaUser getSender() {
//         return sender;
//     }
// 
//     public void setSender(UaaUser sender) {
//         this.sender = sender;
//     }
// 
//     public Boolean getPending() {
//         return isPending;
//     }
// 
//     public void setPending(Boolean pending) {
//         isPending = pending;
//     }
// }


// Path: identity-service/src/main/java/eu/nimble/core/infrastructure/identity/repository/UserInvitationRepository.java
import eu.nimble.core.infrastructure.identity.entity.UaaUser;
import eu.nimble.core.infrastructure.identity.entity.UserInvitation;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

package eu.nimble.core.infrastructure.identity.repository;



@SuppressWarnings("unused")
public interface UserInvitationRepository extends PagingAndSortingRepository<UserInvitation, Long> {
    Page<UserInvitation> findAll(Pageable pageable);

    List<UserInvitation> findByEmail(String email);

    List<UserInvitation> findByCompanyId(String companyId);

    List<UserInvitation> findBySender(UaaUser sender);