// Path: src/main/java/com/github/susom/database/MixedParameterSql.java
// public static class RewriteArg {
//   private final String sql;
// 
//   public RewriteArg(String sql) {
//     this.sql = sql;
//   }
// }


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.susom.database.MixedParameterSql.RewriteArg;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
  public SqlSelect argLocalDate(LocalDate arg) {
    // Date with no time
    return positionalArg(adaptor.nullLocalDate(arg));
  }

  @Nonnull
  @Override
  public SqlSelect argLocalDate(@Nonnull String argName, LocalDate arg) {
    // Date with no time
    return namedArg(argName, adaptor.nullLocalDate(arg));
  }

  @Nonnull
  @Override
  public SqlSelect argDateNowPerApp() {
    return positionalArg(adaptor.nullDate(options.currentDate()));
  }

  @Nonnull
  @Override
  public SqlSelect argDateNowPerApp(@Nonnull String argName) {
    return namedArg(argName, adaptor.nullDate(options.currentDate()));
  }

  @Nonnull
  @Override
  public SqlSelect argDateNowPerDb() {
    if (options.useDatePerAppOnly()) {
      return positionalArg(adaptor.nullDate(options.currentDate()));
    }
// Path: src/main/java/com/github/susom/database/MixedParameterSql.java
// public static class RewriteArg {
//   private final String sql;
// 
//   public RewriteArg(String sql) {
//     this.sql = sql;
//   }
// }


// Path: src/main/java/com/github/susom/database/SqlSelectImpl.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.susom.database.MixedParameterSql.RewriteArg;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;

  public SqlSelect argLocalDate(LocalDate arg) {
    // Date with no time
    return positionalArg(adaptor.nullLocalDate(arg));
  }

  @Nonnull
  @Override
  public SqlSelect argLocalDate(@Nonnull String argName, LocalDate arg) {
    // Date with no time
    return namedArg(argName, adaptor.nullLocalDate(arg));
  }

  @Nonnull
  @Override
  public SqlSelect argDateNowPerApp() {
    return positionalArg(adaptor.nullDate(options.currentDate()));
  }

  @Nonnull
  @Override
  public SqlSelect argDateNowPerApp(@Nonnull String argName) {
    return namedArg(argName, adaptor.nullDate(options.currentDate()));
  }

  @Nonnull
  @Override
  public SqlSelect argDateNowPerDb() {
    if (options.useDatePerAppOnly()) {
      return positionalArg(adaptor.nullDate(options.currentDate()));
    }
    return positionalArg(new RewriteArg(options.flavor().dbTimeMillis()));