Configuration.java

/*
 * Copyright (C) 2023 B3Partners B.V.
 *
 * SPDX-License-Identifier: MIT
 */
package org.tailormap.api.persistence;

import com.fasterxml.jackson.databind.JsonNode;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.Id;
import jakarta.persistence.Version;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import org.tailormap.api.persistence.listener.EntityEventPublisher;

@Entity
@EntityListeners({EntityEventPublisher.class, AuditingEntityListener.class})
public class Configuration extends AuditMetadata {
  public static final String DEFAULT_APP = "default-app";

  public static final String DEFAULT_BASE_APP = "default-base-app";

  public static final String HOME_PAGE = "home-page";

  public static final String PORTAL_MENU = "portal-menu";

  @Id
  private String key;

  @Version
  private Long version;

  @Column(columnDefinition = "text")
  private String value;

  @JdbcTypeCode(SqlTypes.JSON)
  @Column(columnDefinition = "jsonb")
  private JsonNode jsonValue;

  private boolean availableForViewer;

  // <editor-fold desc="getters and setters">
  public String getKey() {
    return key;
  }

  public void setKey(String key) {
    this.key = key;
  }

  public Long getVersion() {
    return version;
  }

  public Configuration setVersion(Long version) {
    this.version = version;
    return this;
  }

  public String getValue() {
    return value;
  }

  public void setValue(String value) {
    this.value = value;
  }

  public JsonNode getJsonValue() {
    return jsonValue;
  }

  public void setJsonValue(JsonNode jsonValue) {
    this.jsonValue = jsonValue;
  }

  public boolean isAvailableForViewer() {
    return availableForViewer;
  }

  public void setAvailableForViewer(boolean availableForViewer) {
    this.availableForViewer = availableForViewer;
  }
  // </editor-fold>
}