View Javadoc
1   package fr.tiogars.chat.domains.mcp.entities;
2   
3   import jakarta.persistence.*;
4   import lombok.Getter;
5   import lombok.Setter;
6   import org.springframework.data.annotation.CreatedDate;
7   import org.springframework.data.annotation.LastModifiedDate;
8   import org.springframework.data.jpa.domain.support.AuditingEntityListener;
9   
10  import java.time.Instant;
11  import java.util.Map;
12  import java.util.UUID;
13  
14  /**
15   * Entity for storing MCP service configurations.
16   */
17  @Entity
18  @Table(name = "mcp_services")
19  @EntityListeners(AuditingEntityListener.class)
20  @Getter
21  @Setter
22  public class McpServiceEntity {
23  
24      @Id
25      @GeneratedValue(strategy = GenerationType.UUID)
26      private UUID id;
27  
28      @Column(nullable = false, unique = true)
29      private String serviceId;
30  
31      @Column(nullable = false)
32      private String name;
33  
34      @Column(columnDefinition = "TEXT")
35      private String description;
36  
37      @Column(columnDefinition = "TEXT")
38      private String command;
39  
40      @ElementCollection
41      @CollectionTable(name = "mcp_service_env", joinColumns = @JoinColumn(name = "service_id"))
42      @MapKeyColumn(name = "env_key")
43      @Column(name = "env_value", columnDefinition = "TEXT")
44      private Map<String, String> env;
45  
46      @Column(name = "is_enabled", nullable = false)
47      private boolean enabled = true;
48  
49      @Column(name = "timeout_seconds")
50      private Integer timeoutSeconds = 30;
51  
52      @CreatedDate
53      @Column(name = "created_at", updatable = false)
54      private Instant createdAt;
55  
56      @LastModifiedDate
57      @Column(name = "updated_at")
58      private Instant updatedAt;
59  
60      public McpServiceEntity() {
61      }
62  
63      public McpServiceEntity(String serviceId, String name, String description, 
64                            String command, Map<String, String> env, 
65                            boolean enabled, Integer timeoutSeconds) {
66          this.serviceId = serviceId;
67          this.name = name;
68          this.description = description;
69          this.command = command;
70          this.env = env;
71          this.enabled = enabled;
72          this.timeoutSeconds = timeoutSeconds;
73      }
74  }