/*
 * (c) 2021 Pluto Inc.
 */
package tv.pluto.mongo.entities.appnames;

import com.google.gson.annotations.JsonAdapter;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.BsonType;
import org.bson.codecs.pojo.annotations.BsonRepresentation;
import org.bson.types.ObjectId;
import tv.pluto.mongo.utils.json.LocalDateTimeAdapter;
import tv.pluto.mongo.utils.json.ObjectIdsAdapter;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class AppNames {
  @BsonRepresentation(BsonType.OBJECT_ID)
  private String id;

  private String name;

  @JsonAdapter(LocalDateTimeAdapter.class)
  private LocalDateTime createdAt;

  @JsonAdapter(LocalDateTimeAdapter.class)
  private LocalDateTime updatedAt;

  private List<String> devices = Collections.emptyList();

  @JsonAdapter(ObjectIdsAdapter.class)
  private List<ObjectId> devicesrev = Collections.emptyList();

  private List<String> regions;

  public String getName() {
    return name == null ? "" : name;
  }

  public List<String> getRegions() {
    return regions == null ? Collections.emptyList() : regions;
  }

  public List<String> getDevices() {
    return devices == null ? Collections.emptyList() : devices;
  }
}
