feat: add environment entity, repository, and status enum
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package net.siegeln.cameleer.saas.environment;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@Table(name = "environments")
|
||||
public class EnvironmentEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.UUID)
|
||||
private UUID id;
|
||||
|
||||
@Column(name = "tenant_id", nullable = false)
|
||||
private UUID tenantId;
|
||||
|
||||
@Column(nullable = false, length = 100)
|
||||
private String slug;
|
||||
|
||||
@Column(name = "display_name", nullable = false)
|
||||
private String displayName;
|
||||
|
||||
@Column(name = "bootstrap_token", nullable = false, columnDefinition = "TEXT")
|
||||
private String bootstrapToken;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(nullable = false, length = 20)
|
||||
private EnvironmentStatus status = EnvironmentStatus.ACTIVE;
|
||||
|
||||
@Column(name = "created_at", nullable = false)
|
||||
private Instant createdAt;
|
||||
|
||||
@Column(name = "updated_at", nullable = false)
|
||||
private Instant updatedAt;
|
||||
|
||||
@PrePersist
|
||||
protected void onCreate() {
|
||||
createdAt = Instant.now();
|
||||
updatedAt = Instant.now();
|
||||
}
|
||||
|
||||
@PreUpdate
|
||||
protected void onUpdate() {
|
||||
updatedAt = Instant.now();
|
||||
}
|
||||
|
||||
public UUID getId() { return id; }
|
||||
public void setId(UUID id) { this.id = id; }
|
||||
public UUID getTenantId() { return tenantId; }
|
||||
public void setTenantId(UUID tenantId) { this.tenantId = tenantId; }
|
||||
public String getSlug() { return slug; }
|
||||
public void setSlug(String slug) { this.slug = slug; }
|
||||
public String getDisplayName() { return displayName; }
|
||||
public void setDisplayName(String displayName) { this.displayName = displayName; }
|
||||
public String getBootstrapToken() { return bootstrapToken; }
|
||||
public void setBootstrapToken(String bootstrapToken) { this.bootstrapToken = bootstrapToken; }
|
||||
public EnvironmentStatus getStatus() { return status; }
|
||||
public void setStatus(EnvironmentStatus status) { this.status = status; }
|
||||
public Instant getCreatedAt() { return createdAt; }
|
||||
public Instant getUpdatedAt() { return updatedAt; }
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package net.siegeln.cameleer.saas.environment;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
@Repository
|
||||
public interface EnvironmentRepository extends JpaRepository<EnvironmentEntity, UUID> {
|
||||
|
||||
List<EnvironmentEntity> findByTenantId(UUID tenantId);
|
||||
|
||||
Optional<EnvironmentEntity> findByTenantIdAndSlug(UUID tenantId, String slug);
|
||||
|
||||
long countByTenantId(UUID tenantId);
|
||||
|
||||
boolean existsByTenantIdAndSlug(UUID tenantId, String slug);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package net.siegeln.cameleer.saas.environment;
|
||||
|
||||
public enum EnvironmentStatus {
|
||||
ACTIVE, SUSPENDED
|
||||
}
|
||||
Reference in New Issue
Block a user