/*
 * Copyright © 2021 DataSQRL (contact@datasqrl.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.datasqrl.engine.log.kafka;

import com.datasqrl.engine.database.EngineCreateTable;
import java.util.List;
import java.util.Map;

public record NewTopic(
    String topicName,
    String tableName,
    String format,
    int numPartitions,
    short replicationFactor,
    Type type,
    List<String> messageKeys,
    String messageSchema,
    Map<String, String> config)
    implements EngineCreateTable {

  public NewTopic(String topicName, String tableName, int numPartitions, short replicationFactor) {
    this(
        topicName,
        tableName,
        null,
        numPartitions,
        replicationFactor,
        Type.SUBSCRIPTION,
        List.of(),
        "",
        Map.of());
  }

  public NewTopic(String topicName, String tableName) {
    this(topicName, tableName, null, 1, (short) 1, Type.SUBSCRIPTION, List.of(), "", Map.of());
  }

  public enum Type {
    MUTATION,
    SUBSCRIPTION
  }
}
