|
- package io.github.norbipeti.gcdc.service;
-
- import discord4j.core.object.util.Snowflake;
- import io.github.norbipeti.gcdc.model.Session;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.support.JdbcDaoSupport;
- import org.springframework.stereotype.Repository;
-
- import javax.annotation.PostConstruct;
- import javax.sql.DataSource;
- import java.util.List;
- import java.util.Map;
-
- @Repository
- public class SessionService extends JdbcDaoSupport {
-
- @Autowired
- DataSource dataSource;
-
- @PostConstruct
- private void initialize() {
- setDataSource(dataSource);
- }
-
- public void insertSession(Session session) {
- String sql = "INSERT INTO sessions(token, channel) VALUES (?, ?)";
- getJdbcTemplate().update(sql, session.getToken(), session.getChannel().asLong());
- }
-
- public Session getSession(String token) {
- String sql = "SELECT * FROM sessions WHERE token=? LIMIT 1";
- return getSession(getJdbcTemplate().queryForList(sql, token));
- }
-
- public Session getSession(long user) {
- String sql = "SELECT * FROM sessions WHERE user=? LIMIT 1";
- return getSession(getJdbcTemplate().queryForList(sql, user));
- }
-
- private Session getSession(List<Map<String, Object>> rows) {
- if (rows.size() == 0) return null;
-
- var row = rows.get(0);
- return new Session((String) row.get("token"), Snowflake.of((long) row.get("channel")),
- (Long) row.get("user"));
- }
-
- public void deleteSession(String token) {
- String sql = "DELETE FROM sessions WHERE token=?";
- getJdbcTemplate().update(sql, token);
- }
- public void deleteSession(long user) {
- String sql = "DELETE FROM sessions WHERE user=?";
- getJdbcTemplate().update(sql, user);
- }
-
- public void updateSession(Session session) {
- String sql = "UPDATE sessions SET channel=? WHERE token=?";
- getJdbcTemplate().update(sql, session.getChannel().asLong(), session.getToken());
- }
-
- }
|