Browse Source

Add version for tenant entity

pull/11112/head
ViacheslavKlimov 2 years ago
parent
commit
486fed375c
  1. 1
      application/src/main/data/upgrade/3.7.0/schema_update.sql
  2. 8
      application/src/test/java/org/thingsboard/server/controller/TenantControllerTest.java
  3. 12
      common/data/src/main/java/org/thingsboard/server/common/data/Tenant.java
  4. 15
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractTenantEntity.java
  5. 1
      dao/src/main/resources/sql/schema-entities.sql

1
application/src/main/data/upgrade/3.7.0/schema_update.sql

@ -40,5 +40,6 @@ ALTER TABLE rule_chain ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE dashboard ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1; ALTER TABLE dashboard ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE widget_type ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1; ALTER TABLE widget_type ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE widgets_bundle ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1; ALTER TABLE widgets_bundle ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE tenant ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
-- ENTITIES VERSIONING UPDATE END -- ENTITIES VERSIONING UPDATE END

8
application/src/test/java/org/thingsboard/server/controller/TenantControllerTest.java

@ -149,7 +149,7 @@ public class TenantControllerTest extends AbstractControllerTest {
testBroadcastEntityStateChangeEventTimeManyTimeTenant(savedTenant, ComponentLifecycleEvent.CREATED, 1); testBroadcastEntityStateChangeEventTimeManyTimeTenant(savedTenant, ComponentLifecycleEvent.CREATED, 1);
savedTenant.setTitle("My new tenant"); savedTenant.setTitle("My new tenant");
saveTenant(savedTenant); savedTenant = saveTenant(savedTenant);
Tenant foundTenant = doGet("/api/tenant/" + savedTenant.getId().getId().toString(), Tenant.class); Tenant foundTenant = doGet("/api/tenant/" + savedTenant.getId().getId().toString(), Tenant.class);
Assert.assertEquals(foundTenant.getTitle(), savedTenant.getTitle()); Assert.assertEquals(foundTenant.getTitle(), savedTenant.getTitle());
@ -470,7 +470,7 @@ public class TenantControllerTest extends AbstractControllerTest {
tenantProfile = doPost("/api/tenantProfile", tenantProfile, TenantProfile.class); tenantProfile = doPost("/api/tenantProfile", tenantProfile, TenantProfile.class);
tenant.setTenantProfileId(tenantProfile.getId()); tenant.setTenantProfileId(tenantProfile.getId());
saveTenant(tenant); tenant = saveTenant(tenant);
login(username, password); login(username, password);
@ -500,7 +500,7 @@ public class TenantControllerTest extends AbstractControllerTest {
tenantProfile2 = doPost("/api/tenantProfile", tenantProfile2, TenantProfile.class); tenantProfile2 = doPost("/api/tenantProfile", tenantProfile2, TenantProfile.class);
tenant.setTenantProfileId(tenantProfile2.getId()); tenant.setTenantProfileId(tenantProfile2.getId());
saveTenant(tenant); tenant = saveTenant(tenant);
login(username, password); login(username, password);
@ -542,7 +542,7 @@ public class TenantControllerTest extends AbstractControllerTest {
loginSysAdmin(); loginSysAdmin();
tenant.setTenantProfileId(null); tenant.setTenantProfileId(null);
saveTenant(tenant); tenant = saveTenant(tenant);
login(username, password); login(username, password);
for (Queue queue : foundTenantQueues) { for (Queue queue : foundTenantQueues) {

12
common/data/src/main/java/org/thingsboard/server/common/data/Tenant.java

@ -20,6 +20,8 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.TenantProfileId; import org.thingsboard.server.common.data.id.TenantProfileId;
import org.thingsboard.server.common.data.validation.Length; import org.thingsboard.server.common.data.validation.Length;
@ -27,7 +29,7 @@ import org.thingsboard.server.common.data.validation.NoXss;
@Schema @Schema
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class Tenant extends ContactBased<TenantId> implements HasTenantId, HasTitle { public class Tenant extends ContactBased<TenantId> implements HasTenantId, HasTitle, HasVersion {
private static final long serialVersionUID = 8057243243859922101L; private static final long serialVersionUID = 8057243243859922101L;
@ -43,6 +45,9 @@ public class Tenant extends ContactBased<TenantId> implements HasTenantId, HasTi
@Schema(description = "JSON object with Tenant Profile Id") @Schema(description = "JSON object with Tenant Profile Id")
private TenantProfileId tenantProfileId; private TenantProfileId tenantProfileId;
@Getter @Setter
private Long version;
public Tenant() { public Tenant() {
super(); super();
} }
@ -56,6 +61,7 @@ public class Tenant extends ContactBased<TenantId> implements HasTenantId, HasTi
this.title = tenant.getTitle(); this.title = tenant.getTitle();
this.region = tenant.getRegion(); this.region = tenant.getRegion();
this.tenantProfileId = tenant.getTenantProfileId(); this.tenantProfileId = tenant.getTenantProfileId();
this.version = tenant.getVersion();
} }
public String getTitle() { public String getTitle() {
@ -98,7 +104,7 @@ public class Tenant extends ContactBased<TenantId> implements HasTenantId, HasTi
@Schema(description = "JSON object with the tenant Id. " + @Schema(description = "JSON object with the tenant Id. " +
"Specify this field to update the tenant. " + "Specify this field to update the tenant. " +
"Referencing non-existing tenant Id will cause error. " + "Referencing non-existing tenant Id will cause error. " +
"Omit this field to create new tenant." ) "Omit this field to create new tenant.")
@Override @Override
public TenantId getId() { public TenantId getId() {
return super.getId(); return super.getId();
@ -158,7 +164,7 @@ public class Tenant extends ContactBased<TenantId> implements HasTenantId, HasTi
return super.getEmail(); return super.getEmail();
} }
@Schema(description = "Additional parameters of the device",implementation = com.fasterxml.jackson.databind.JsonNode.class) @Schema(description = "Additional parameters of the device", implementation = com.fasterxml.jackson.databind.JsonNode.class)
@Override @Override
public JsonNode getAdditionalInfo() { public JsonNode getAdditionalInfo() {
return super.getAdditionalInfo(); return super.getAdditionalInfo();

15
dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractTenantEntity.java

@ -24,7 +24,7 @@ import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.id.TenantProfileId; import org.thingsboard.server.common.data.id.TenantProfileId;
import org.thingsboard.server.dao.model.BaseSqlEntity; import org.thingsboard.server.dao.model.BaseVersionedEntity;
import org.thingsboard.server.dao.model.ModelConstants; import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.mapping.JsonConverter; import org.thingsboard.server.dao.util.mapping.JsonConverter;
@ -33,7 +33,7 @@ import java.util.UUID;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@MappedSuperclass @MappedSuperclass
public abstract class AbstractTenantEntity<T extends Tenant> extends BaseSqlEntity<T> { public abstract class AbstractTenantEntity<T extends Tenant> extends BaseVersionedEntity<T> {
@Column(name = ModelConstants.TENANT_TITLE_PROPERTY) @Column(name = ModelConstants.TENANT_TITLE_PROPERTY)
private String title; private String title;
@ -76,11 +76,8 @@ public abstract class AbstractTenantEntity<T extends Tenant> extends BaseSqlEnti
super(); super();
} }
public AbstractTenantEntity(Tenant tenant) { public AbstractTenantEntity(T tenant) {
if (tenant.getId() != null) { super(tenant);
this.setUuid(tenant.getId().getId());
}
this.setCreatedTime(tenant.getCreatedTime());
this.title = tenant.getTitle(); this.title = tenant.getTitle();
this.region = tenant.getRegion(); this.region = tenant.getRegion();
this.country = tenant.getCountry(); this.country = tenant.getCountry();
@ -98,8 +95,7 @@ public abstract class AbstractTenantEntity<T extends Tenant> extends BaseSqlEnti
} }
public AbstractTenantEntity(TenantEntity tenantEntity) { public AbstractTenantEntity(TenantEntity tenantEntity) {
this.setId(tenantEntity.getId()); super(tenantEntity);
this.setCreatedTime(tenantEntity.getCreatedTime());
this.title = tenantEntity.getTitle(); this.title = tenantEntity.getTitle();
this.region = tenantEntity.getRegion(); this.region = tenantEntity.getRegion();
this.country = tenantEntity.getCountry(); this.country = tenantEntity.getCountry();
@ -117,6 +113,7 @@ public abstract class AbstractTenantEntity<T extends Tenant> extends BaseSqlEnti
protected Tenant toTenant() { protected Tenant toTenant() {
Tenant tenant = new Tenant(TenantId.fromUUID(this.getUuid())); Tenant tenant = new Tenant(TenantId.fromUUID(this.getUuid()));
tenant.setCreatedTime(createdTime); tenant.setCreatedTime(createdTime);
tenant.setVersion(version);
tenant.setTitle(title); tenant.setTitle(title);
tenant.setRegion(region); tenant.setRegion(region);
tenant.setCountry(country); tenant.setCountry(country);

1
dao/src/main/resources/sql/schema-entities.sql

@ -480,6 +480,7 @@ CREATE TABLE IF NOT EXISTS tenant (
state varchar(255), state varchar(255),
title varchar(255), title varchar(255),
zip varchar(255), zip varchar(255),
version BIGINT DEFAULT 1,
CONSTRAINT fk_tenant_profile FOREIGN KEY (tenant_profile_id) REFERENCES tenant_profile(id) CONSTRAINT fk_tenant_profile FOREIGN KEY (tenant_profile_id) REFERENCES tenant_profile(id)
); );

Loading…
Cancel
Save