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
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 }