package com.orchard.models;

import org.apache.kafka.connect.data.Schema;
import org.apache.kafka.connect.data.SchemaBuilder;
import org.apache.kafka.connect.data.Struct;

public class GlobalParticipant implements OrchardModel {
    public String id;

    public String name;

    public String countryCode;

    public String imageUrl;

    public boolean hasPublicData;

    public String createdAt;

    public String lastModifiedAt;

    public Stats stats;

    public GPSocialAccountIds socialAccountIds;

    public static final org.apache.kafka.connect.data.Schema KafkaSchema = SchemaBuilder
            .struct().optional()
            .field("id", Schema.OPTIONAL_STRING_SCHEMA)
            .field("name", Schema.OPTIONAL_STRING_SCHEMA)
            .field("countryCode", Schema.OPTIONAL_STRING_SCHEMA)
            .field("imageUrl", Schema.OPTIONAL_STRING_SCHEMA)
            .field("hasPublicData", Schema.OPTIONAL_BOOLEAN_SCHEMA)
            .field("createdAt", Schema.OPTIONAL_STRING_SCHEMA)
            .field("lastModifiedAt", Schema.OPTIONAL_STRING_SCHEMA)
            .field("stats", com.orchard.models.Stats.KafkaSchema)
            .field("socialAccountIds", com.orchard.models.GPSocialAccountIds.KafkaSchema)
            .build();

    public Struct ToKafkaStruct() {
        return new Struct(KafkaSchema)
                .put("id", id)
                .put("name", name)
                .put("countryCode", countryCode)
                .put("imageUrl", imageUrl)
                .put("hasPublicData", hasPublicData)
                .put("createdAt", createdAt)
                .put("lastModifiedAt", lastModifiedAt)
                .put("stats", stats.ToKafkaStruct())
                .put("socialAccountIds", socialAccountIds.ToKafkaStruct());
    }
}
