package keywhiz.api.model; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.google.auto.value.AutoValue; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableMap; import javax.annotation.Nullable; import keywhiz.api.ApiDate; import static com.google.common.base.Strings.nullToEmpty; /** * Contains all relevant information on a version of a secret (note that this does * not contain the contents of a secret). */ @AutoValue public abstract class SecretVersion { public static SecretVersion of(long secretId, long versionId, String name, @Nullable String description, ApiDate createdAt, @Nullable String createdBy, ApiDate updatedAt, @Nullable String updatedBy, ImmutableMap<String, String> metadata, @Nullable String type, long expiry) { return new AutoValue_SecretVersion(secretId, versionId, name, nullToEmpty(description), createdAt, nullToEmpty(createdBy), updatedAt, nullToEmpty(updatedBy), metadata, type, expiry); } public abstract long secretId(); public abstract long versionId(); public abstract String name(); public abstract String description(); public abstract ApiDate createdAt(); public abstract String createdBy(); public abstract ApiDate updatedAt(); public abstract String updatedBy(); @JsonAnyGetter public abstract ImmutableMap<String, String> metadata(); public abstract String type(); public abstract long expiry(); @Override public String toString() { return MoreObjects.toStringHelper(this) .add("secretId", secretId()) .add("name", name()) .add("description", description()) .add("createdAt", createdAt()) .add("createdBy", createdBy()) .add("updatedAt", updatedAt()) .add("updatedBy", updatedBy()) .add("metadata", metadata()) .add("type", type()) .add("expiry", expiry()) .omitNullValues().toString(); } }