001package io.ebean.config.dbplatform.postgres;
002
003import io.ebean.BackgroundExecutor;
004import io.ebean.config.dbplatform.SequenceBatchIdGenerator;
005
006import javax.sql.DataSource;
007
008/**
009 * Postgres specific sequence Id Generator.
010 */
011public class PostgresSequenceIdGenerator extends SequenceBatchIdGenerator {
012
013  private final String baseSql;
014
015  /**
016   * Construct given a dataSource and sql to return the next sequence value.
017   */
018  public PostgresSequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) {
019    super(be, ds, seqName, batchSize);
020    this.baseSql = "select nextval('" + seqName + "'), s.generate_series from (select generate_series from generate_series(1,";
021  }
022
023  @Override
024  public String getSql(int batchSize) {
025    return baseSql + batchSize + ") ) as s";
026  }
027}