package com.orchard.models;

import java.util.List;
import org.apache.kafka.connect.data.Schema;
import org.apache.kafka.connect.data.SchemaBuilder;
import org.apache.kafka.connect.data.Struct;

public class LabelSoundRecording implements OrchardModel {
    public String uuid;

    public String name;

    public long vendorId;

    public long subaccountId;

    public String vendorName;

    public String subaccountName;

    public String createdAt;

    public String lastModifiedAt;

    public List<String> distributionFlags;

    public StreamsStats streamsStats;

    public static final Schema KafkaSchema = SchemaBuilder
            .struct().optional()
            .field("uuid", Schema.OPTIONAL_STRING_SCHEMA)
            .field("name", Schema.OPTIONAL_STRING_SCHEMA)
            .field("vendorId", Schema.OPTIONAL_INT64_SCHEMA)
            .field("subaccountId", Schema.OPTIONAL_INT64_SCHEMA)
            .field("vendorName", Schema.OPTIONAL_STRING_SCHEMA)
            .field("subaccountName", Schema.OPTIONAL_STRING_SCHEMA)
            .field("createdAt", Schema.OPTIONAL_STRING_SCHEMA)
            .field("lastModifiedAt", Schema.OPTIONAL_STRING_SCHEMA)
            .field("distributionFlags",
                SchemaBuilder.array(Schema.OPTIONAL_STRING_SCHEMA).optional().build())
            .field("streamsStats", com.orchard.models.StreamsStats.KafkaSchema)
            .build();

    public Struct ToKafkaStruct() {
        return new Struct(KafkaSchema)
                .put("uuid", uuid)
                .put("name", name)
                .put("vendorId", vendorId)
                .put("subaccountId", subaccountId)
                .put("vendorName", vendorName)
                .put("subaccountName", subaccountName)
                .put("createdAt", createdAt)
                .put("lastModifiedAt", lastModifiedAt)
                .put("distributionFlags", distributionFlags)
                .put("streamsStats", streamsStats.ToKafkaStruct());
    }
}
