IdA1UserColumn.java

package com.io7m.idstore.protocol.admin.cb;

import com.io7m.cedarbridge.runtime.api.CBDeserializerMethod;
import com.io7m.cedarbridge.runtime.api.CBSerializableType;
import com.io7m.cedarbridge.runtime.api.CBSerializationContextType;
import com.io7m.cedarbridge.runtime.api.CBSerializerMethod;
import java.io.IOException;

/**
 * A column to use for sorting users.
 */
public sealed interface IdA1UserColumn extends CBSerializableType {
  /**
   * Serialize a value of type IdA1UserColumn.
   * @param $context The serialization context.
   * @param $x The value to be serialized.
   */
  @CBSerializerMethod
  static void serialize(final CBSerializationContextType $context, final IdA1UserColumn $x) throws
      IOException {
    if ($x instanceof ByID $y) {
      $context.writeVariantIndex(0);
      ByID.serialize($context, $y);
      return;
    }
    if ($x instanceof ByIDName $y) {
      $context.writeVariantIndex(1);
      ByIDName.serialize($context, $y);
      return;
    }
    if ($x instanceof ByRealName $y) {
      $context.writeVariantIndex(2);
      ByRealName.serialize($context, $y);
      return;
    }
    if ($x instanceof ByTimeCreated $y) {
      $context.writeVariantIndex(3);
      ByTimeCreated.serialize($context, $y);
      return;
    }
    if ($x instanceof ByTimeUpdated $y) {
      $context.writeVariantIndex(4);
      ByTimeUpdated.serialize($context, $y);
      return;
    }
    throw $context.errorUnrecognizedVariantCaseClass(IdA1UserColumn.class, $x.getClass());
  }

  /**
   * Deserialize a value of type IdA1UserColumn.
   * @param $context The serialization context.
   * @return A value of type IdA1UserColumn.
   */
  @CBDeserializerMethod
  static IdA1UserColumn deserialize(final CBSerializationContextType $context) throws IOException {
    final var $i = $context.readVariantIndex();
    switch ($i) {
      case 0: {
        return ByID.deserialize($context);
      }
      case 1: {
        return ByIDName.deserialize($context);
      }
      case 2: {
        return ByRealName.deserialize($context);
      }
      case 3: {
        return ByTimeCreated.deserialize($context);
      }
      case 4: {
        return ByTimeUpdated.deserialize($context);
      }
      default:  {
        throw $context.errorUnrecognizedVariantIndex(IdA1UserColumn.class, $i);
      }
    }
  }

  /**
   * Order by user ID.
   */
  record ByID() implements CBSerializableType, IdA1UserColumn {
    public ByID {
    }

    /**
     * Serialize a value of type com.io7m.idstore.protocol.admin.cb.ByID.
     * @param $context The serialization context.
     * @param $x The value to be serialized.
     */
    @CBSerializerMethod
    public static void serialize(final CBSerializationContextType $context, final ByID $x) throws
        IOException {
      // Serialization calls in field order.
    }

    /**
     * Deserialize a value of type com.io7m.idstore.protocol.admin.cb.ByID.
     * @param $context The serialization context.
     * @return A value of type com.io7m.idstore.protocol.admin.cb.ByID.
     */
    @CBDeserializerMethod
    public static ByID deserialize(final CBSerializationContextType $context) throws IOException {
      // Deserialization calls in field order.
      return new ByID();
    }
  }

  /**
   * Order by user id name.
   */
  record ByIDName() implements CBSerializableType, IdA1UserColumn {
    public ByIDName {
    }

    /**
     * Serialize a value of type com.io7m.idstore.protocol.admin.cb.ByIDName.
     * @param $context The serialization context.
     * @param $x The value to be serialized.
     */
    @CBSerializerMethod
    public static void serialize(final CBSerializationContextType $context, final ByIDName $x)
        throws IOException {
      // Serialization calls in field order.
    }

    /**
     * Deserialize a value of type com.io7m.idstore.protocol.admin.cb.ByIDName.
     * @param $context The serialization context.
     * @return A value of type com.io7m.idstore.protocol.admin.cb.ByIDName.
     */
    @CBDeserializerMethod
    public static ByIDName deserialize(final CBSerializationContextType $context) throws
        IOException {
      // Deserialization calls in field order.
      return new ByIDName();
    }
  }

  /**
   * Order by user realname.
   */
  record ByRealName() implements CBSerializableType, IdA1UserColumn {
    public ByRealName {
    }

    /**
     * Serialize a value of type com.io7m.idstore.protocol.admin.cb.ByRealName.
     * @param $context The serialization context.
     * @param $x The value to be serialized.
     */
    @CBSerializerMethod
    public static void serialize(final CBSerializationContextType $context, final ByRealName $x)
        throws IOException {
      // Serialization calls in field order.
    }

    /**
     * Deserialize a value of type com.io7m.idstore.protocol.admin.cb.ByRealName.
     * @param $context The serialization context.
     * @return A value of type com.io7m.idstore.protocol.admin.cb.ByRealName.
     */
    @CBDeserializerMethod
    public static ByRealName deserialize(final CBSerializationContextType $context) throws
        IOException {
      // Deserialization calls in field order.
      return new ByRealName();
    }
  }

  /**
   * Order by user creation time.
   */
  record ByTimeCreated() implements CBSerializableType, IdA1UserColumn {
    public ByTimeCreated {
    }

    /**
     * Serialize a value of type com.io7m.idstore.protocol.admin.cb.ByTimeCreated.
     * @param $context The serialization context.
     * @param $x The value to be serialized.
     */
    @CBSerializerMethod
    public static void serialize(final CBSerializationContextType $context, final ByTimeCreated $x)
        throws IOException {
      // Serialization calls in field order.
    }

    /**
     * Deserialize a value of type com.io7m.idstore.protocol.admin.cb.ByTimeCreated.
     * @param $context The serialization context.
     * @return A value of type com.io7m.idstore.protocol.admin.cb.ByTimeCreated.
     */
    @CBDeserializerMethod
    public static ByTimeCreated deserialize(final CBSerializationContextType $context) throws
        IOException {
      // Deserialization calls in field order.
      return new ByTimeCreated();
    }
  }

  /**
   * Order by user update time.
   */
  record ByTimeUpdated() implements CBSerializableType, IdA1UserColumn {
    public ByTimeUpdated {
    }

    /**
     * Serialize a value of type com.io7m.idstore.protocol.admin.cb.ByTimeUpdated.
     * @param $context The serialization context.
     * @param $x The value to be serialized.
     */
    @CBSerializerMethod
    public static void serialize(final CBSerializationContextType $context, final ByTimeUpdated $x)
        throws IOException {
      // Serialization calls in field order.
    }

    /**
     * Deserialize a value of type com.io7m.idstore.protocol.admin.cb.ByTimeUpdated.
     * @param $context The serialization context.
     * @return A value of type com.io7m.idstore.protocol.admin.cb.ByTimeUpdated.
     */
    @CBDeserializerMethod
    public static ByTimeUpdated deserialize(final CBSerializationContextType $context) throws
        IOException {
      // Deserialization calls in field order.
      return new ByTimeUpdated();
    }
  }
}