/*
* Eduardo, an IRC bot framework
* Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) Eduardo team and contributors
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.sk89q.eduardo.service.persistence;
import org.flywaydb.core.Flyway;
import org.jooq.Record;
import org.jooq.Table;
import org.jooq.impl.DSL;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class Bucket {
private final Persistence persistence;
private final String id;
public Bucket(Persistence persistence, String id) {
this.persistence = persistence;
this.id = id;
migrate();
}
public void migrate() {
Map<String, String> placeHolders = new HashMap<String, String>();
placeHolders.put("tablePrefix", id + "_");
Flyway flyway = new Flyway();
flyway.setLocations("migrations/" + id);
flyway.setClassLoader(getClass().getClassLoader());
flyway.setDataSource(persistence.getDataSource());
flyway.setTable(id + "_migrations");
flyway.setPlaceholders(placeHolders);
flyway.setValidateOnMigrate(false);
flyway.migrate();
}
public Connection createConnection() throws SQLException {
return persistence.getDataSource().getConnection();
}
public <V> Table<Record> table(String name) {
return DSL.table(id + "_" + name);
}
}