Skip to content

Commit e4ba2c9

Browse files
committed
create SERVICE_OBJECTS and SERVICE_DEPENDENT_OBJECT table
1 parent 9b36a69 commit e4ba2c9

File tree

6 files changed

+151
-0
lines changed

6 files changed

+151
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* SPDX-FileCopyrightText: Huawei Inc.
4+
*
5+
*/
6+
7+
package org.eclipse.xpanse.modules.database.serviceobject;
8+
9+
import java.util.UUID;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.stereotype.Component;
12+
import org.springframework.transaction.annotation.Transactional;
13+
14+
/** Implementation of the sStorage. */
15+
@Component
16+
@Transactional
17+
public class DatabaseServiceObjectStorage implements ServiceObjectStorage {
18+
19+
private final ServiceObjectRepository repository;
20+
21+
@Autowired
22+
public DatabaseServiceObjectStorage(ServiceObjectRepository repository) {
23+
this.repository = repository;
24+
}
25+
26+
@Override
27+
public ServiceObjectEntity storeAndFlush(ServiceObjectEntity entity) {
28+
return repository.saveAndFlush(entity);
29+
}
30+
31+
@Override
32+
public void delete(ServiceObjectEntity entity) {
33+
repository.delete(entity);
34+
}
35+
36+
@Override
37+
public ServiceObjectEntity getEntityById(UUID objectId) {
38+
return repository.findById(objectId).orElse(null);
39+
}
40+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* SPDX-FileCopyrightText: Huawei Inc.
4+
*
5+
*/
6+
7+
package org.eclipse.xpanse.modules.database.serviceobject;
8+
9+
import io.hypersistence.utils.hibernate.type.json.JsonType;
10+
import jakarta.persistence.CollectionTable;
11+
import jakarta.persistence.Column;
12+
import jakarta.persistence.Convert;
13+
import jakarta.persistence.ElementCollection;
14+
import jakarta.persistence.Entity;
15+
import jakarta.persistence.FetchType;
16+
import jakarta.persistence.GeneratedValue;
17+
import jakarta.persistence.GenerationType;
18+
import jakarta.persistence.Id;
19+
import jakarta.persistence.JoinColumn;
20+
import jakarta.persistence.OneToOne;
21+
import jakarta.persistence.Table;
22+
import java.io.Serial;
23+
import java.io.Serializable;
24+
import java.util.Map;
25+
import java.util.Set;
26+
import java.util.UUID;
27+
import lombok.Data;
28+
import org.eclipse.xpanse.modules.database.common.ObjectJsonConverter;
29+
import org.eclipse.xpanse.modules.database.service.ServiceDeploymentEntity;
30+
import org.eclipse.xpanse.modules.models.servicetemplate.ObjectIdentifier;
31+
import org.hibernate.annotations.Type;
32+
33+
/** ServiceObjectEntity for persistence. */
34+
@Table(name = "SERVICE_OBJECT")
35+
@Entity
36+
@Data
37+
public class ServiceObjectEntity implements Serializable {
38+
39+
@Serial private static final long serialVersionUID = 8759122775257853274L;
40+
41+
@Id
42+
@GeneratedValue(strategy = GenerationType.UUID)
43+
@Column(name = "OBJECT_ID", nullable = false)
44+
private UUID objectId;
45+
46+
@OneToOne(fetch = FetchType.LAZY)
47+
@JoinColumn(name = "SERVICE_ID", nullable = false)
48+
private ServiceDeploymentEntity serviceDeploymentEntity;
49+
50+
@JoinColumn(name = "OBJECT_TYPE", nullable = false)
51+
private String objectType;
52+
53+
@JoinColumn(name = "OBJECT_IDENTIFIER", nullable = false)
54+
private ObjectIdentifier objectIdentifier;
55+
56+
@Column(name = "PROPERTIES", columnDefinition = "json", length = Integer.MAX_VALUE)
57+
@Type(value = JsonType.class)
58+
@Convert(converter = ObjectJsonConverter.class)
59+
private Map<String, Object> properties;
60+
61+
@ElementCollection
62+
@CollectionTable(
63+
name = "SERVICE_DEPENDENT_OBJECT",
64+
joinColumns = @JoinColumn(name = "OBJECT_ID", nullable = false) // 当前对象ID
65+
)
66+
@Column(name = "DEPENDENT_OBJECT_ID")
67+
private Set<UUID> dependentObjectIds;
68+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* SPDX-FileCopyrightText: Huawei Inc.
4+
*
5+
*/
6+
7+
package org.eclipse.xpanse.modules.database.serviceobject;
8+
9+
import java.util.UUID;
10+
import org.eclipse.xpanse.modules.database.CustomJpaRepository;
11+
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
12+
import org.springframework.stereotype.Repository;
13+
14+
/** Interface to access default JPA methods. */
15+
@Repository
16+
public interface ServiceObjectRepository
17+
extends CustomJpaRepository<ServiceObjectEntity, UUID>,
18+
JpaSpecificationExecutor<ServiceObjectEntity> {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* SPDX-FileCopyrightText: Huawei Inc.
4+
*
5+
*/
6+
7+
package org.eclipse.xpanse.modules.database.serviceobject;
8+
9+
import java.util.UUID;
10+
11+
/** Interface for persist of ServiceObjectEntity. */
12+
public interface ServiceObjectStorage {
13+
14+
ServiceObjectEntity storeAndFlush(ServiceObjectEntity entity);
15+
16+
void delete(ServiceObjectEntity entity);
17+
18+
ServiceObjectEntity getEntityById(UUID objectId);
19+
}

Diff for: modules/database/src/main/java/org/eclipse/xpanse/modules/database/serviceorder/ServiceOrderEntity.java

+5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import lombok.Data;
2929
import org.eclipse.xpanse.modules.database.common.ObjectJsonConverter;
3030
import org.eclipse.xpanse.modules.database.service.ServiceDeploymentEntity;
31+
import org.eclipse.xpanse.modules.database.serviceobject.ServiceObjectEntity;
3132
import org.eclipse.xpanse.modules.models.response.ErrorResponse;
3233
import org.eclipse.xpanse.modules.models.service.enums.Handler;
3334
import org.eclipse.xpanse.modules.models.service.enums.OrderStatus;
@@ -56,6 +57,10 @@ public class ServiceOrderEntity implements Serializable {
5657
@OnDelete(action = OnDeleteAction.CASCADE)
5758
private ServiceDeploymentEntity serviceDeploymentEntity;
5859

60+
@ManyToOne(fetch = FetchType.LAZY)
61+
@JoinColumn(name = "OBJECT_ID")
62+
private ServiceObjectEntity serviceObjectEntity;
63+
5964
@Column(name = "PARENT_ORDER_ID")
6065
private UUID parentOrderId;
6166

Diff for: modules/deployment/src/main/java/org/eclipse/xpanse/modules/deployment/ServiceOrderManager.java

+1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ public ServiceOrderEntity createAndStoreGenericServiceOrderEntity(
121121
serviceOrderEntity.setOrderStatus(OrderStatus.CREATED);
122122
serviceOrderEntity.setStartedTime(OffsetDateTime.now());
123123
serviceOrderEntity.setRequestBody(getRequestBody(originalRequest));
124+
serviceOrderEntity.setHandler(Handler.AGENT);
124125
return serviceOrderStorage.storeAndFlush(serviceOrderEntity);
125126
}
126127

0 commit comments

Comments
 (0)