package com.titizz.shorturl.repository.impl;

import com.mysql.jdbc.Statement;
import com.titizz.shorturl.repository.InitialCodeDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;

@Repository
public class InitialCodeDaoImpl implements InitialCodeDao {

    /** 自增 id 步进值 */
    public static final Long AUTO_INCREMENT_STEP = 1000L;

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public Long insert() {
        KeyHolder keyHolder = new GeneratedKeyHolder();
        jdbcTemplate.update(conn -> conn.prepareStatement("INSERT INTO initial_code VALUE()",
                Statement.RETURN_GENERATED_KEYS), keyHolder);

        return keyHolder.getKey().intValue() - 1L;
    }
}