mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Change DBStore to target a file
This commit is contained in:
parent
25fea8ef58
commit
c3609803c0
3 changed files with 62 additions and 20 deletions
|
@ -16,9 +16,9 @@ public class SqliteDBStore implements DBStore {
|
||||||
|
|
||||||
private final SQLiteWLDatabase database;
|
private final SQLiteWLDatabase database;
|
||||||
|
|
||||||
public SqliteDBStore(File rootDirectory) {
|
public SqliteDBStore(File dbFile) {
|
||||||
try {
|
try {
|
||||||
database = new SQLiteWLDatabase(rootDirectory);
|
database = new SQLiteWLDatabase(dbFile);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
|
@ -87,12 +87,20 @@ public class SqliteDBStore implements DBStore {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getOldestUnswappedProject() {
|
public String getOldestUnswappedProject() {
|
||||||
throw new UnsupportedOperationException();
|
try {
|
||||||
|
return database.getOldestUnswappedProject();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setLastAccessedTime(String projectName, Timestamp time) {
|
public void setLastAccessedTime(String projectName, Timestamp time) {
|
||||||
throw new UnsupportedOperationException();
|
try {
|
||||||
|
database.setLastAccessedTime(projectName, time);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package uk.ac.ic.wlgitbridge.data.model.db.sql;
|
package uk.ac.ic.wlgitbridge.data.model.db.sql;
|
||||||
|
|
||||||
|
import com.google.api.client.repackaged.com.google.common.base.Preconditions;
|
||||||
import uk.ac.ic.wlgitbridge.data.model.db.sql.query.GetLatestVersionForProjectSQLQuery;
|
import uk.ac.ic.wlgitbridge.data.model.db.sql.query.GetLatestVersionForProjectSQLQuery;
|
||||||
import uk.ac.ic.wlgitbridge.data.model.db.sql.query.GetPathForURLInProjectSQLQuery;
|
import uk.ac.ic.wlgitbridge.data.model.db.sql.query.GetPathForURLInProjectSQLQuery;
|
||||||
import uk.ac.ic.wlgitbridge.data.model.db.sql.query.GetProjectNamesSQLQuery;
|
import uk.ac.ic.wlgitbridge.data.model.db.sql.query.GetProjectNamesSQLQuery;
|
||||||
|
@ -9,7 +10,6 @@ import uk.ac.ic.wlgitbridge.data.model.db.sql.update.create.CreateURLIndexStoreS
|
||||||
import uk.ac.ic.wlgitbridge.data.model.db.sql.update.delete.DeleteFilesForProjectSQLUpdate;
|
import uk.ac.ic.wlgitbridge.data.model.db.sql.update.delete.DeleteFilesForProjectSQLUpdate;
|
||||||
import uk.ac.ic.wlgitbridge.data.model.db.sql.update.insert.AddURLIndexSQLUpdate;
|
import uk.ac.ic.wlgitbridge.data.model.db.sql.update.insert.AddURLIndexSQLUpdate;
|
||||||
import uk.ac.ic.wlgitbridge.data.model.db.sql.update.insert.SetProjectSQLUpdate;
|
import uk.ac.ic.wlgitbridge.data.model.db.sql.update.insert.SetProjectSQLUpdate;
|
||||||
import uk.ac.ic.wlgitbridge.util.Log;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
|
@ -22,36 +22,54 @@ public class SQLiteWLDatabase {
|
||||||
|
|
||||||
private final Connection connection;
|
private final Connection connection;
|
||||||
|
|
||||||
public SQLiteWLDatabase(File rootGitDirectory) throws SQLException, ClassNotFoundException {
|
public SQLiteWLDatabase(
|
||||||
File databaseFile = new File(rootGitDirectory, "/.wlgb/wlgb.db");
|
File dbFile
|
||||||
File dotWlgbDir = databaseFile.getParentFile();
|
) throws SQLException, ClassNotFoundException {
|
||||||
if (!dotWlgbDir.exists()) {
|
File parentDir = dbFile.getParentFile();
|
||||||
if (!dotWlgbDir.mkdirs()) {
|
Preconditions.checkState(
|
||||||
Log.error("{} directory didn't exist, and unable to create. Check your permissions", dotWlgbDir.getAbsolutePath());
|
parentDir.exists() || parentDir.mkdirs(),
|
||||||
}
|
parentDir.getAbsolutePath() + " directory didn't exist, " +
|
||||||
}
|
"and unable to create. Check your permissions."
|
||||||
|
);
|
||||||
Class.forName("org.sqlite.JDBC");
|
Class.forName("org.sqlite.JDBC");
|
||||||
connection = DriverManager.getConnection("jdbc:sqlite:" + databaseFile.getAbsolutePath());
|
connection = DriverManager.getConnection(
|
||||||
|
"jdbc:sqlite:" + dbFile.getAbsolutePath()
|
||||||
|
);
|
||||||
createTables();
|
createTables();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersionIDForProject(String projectName, int versionID) throws SQLException {
|
public void setVersionIDForProject(
|
||||||
|
String projectName,
|
||||||
|
int versionID
|
||||||
|
) throws SQLException {
|
||||||
update(new SetProjectSQLUpdate(projectName, versionID));
|
update(new SetProjectSQLUpdate(projectName, versionID));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addURLIndex(String projectName, String url, String path) throws SQLException {
|
public void addURLIndex(
|
||||||
|
String projectName,
|
||||||
|
String url,
|
||||||
|
String path
|
||||||
|
) throws SQLException {
|
||||||
update(new AddURLIndexSQLUpdate(projectName, url, path));
|
update(new AddURLIndexSQLUpdate(projectName, url, path));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteFilesForProject(String projectName, String... paths) throws SQLException {
|
public void deleteFilesForProject(
|
||||||
|
String projectName,
|
||||||
|
String... paths
|
||||||
|
) throws SQLException {
|
||||||
update(new DeleteFilesForProjectSQLUpdate(projectName, paths));
|
update(new DeleteFilesForProjectSQLUpdate(projectName, paths));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getVersionIDForProjectName(String projectName) throws SQLException {
|
public int getVersionIDForProjectName(
|
||||||
|
String projectName
|
||||||
|
) throws SQLException {
|
||||||
return query(new GetLatestVersionForProjectSQLQuery(projectName));
|
return query(new GetLatestVersionForProjectSQLQuery(projectName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPathForURLInProject(String projectName, String url) throws SQLException {
|
public String getPathForURLInProject(
|
||||||
|
String projectName,
|
||||||
|
String url
|
||||||
|
) throws SQLException {
|
||||||
return query(new GetPathForURLInProjectSQLQuery(projectName, url));
|
return query(new GetPathForURLInProjectSQLQuery(projectName, url));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,6 +77,17 @@ public class SQLiteWLDatabase {
|
||||||
return query(new GetProjectNamesSQLQuery());
|
return query(new GetProjectNamesSQLQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getOldestUnswappedProject() throws SQLException {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLastAccessedTime(
|
||||||
|
String projectName,
|
||||||
|
Timestamp time
|
||||||
|
) throws SQLException {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
private void createTables() throws SQLException {
|
private void createTables() throws SQLException {
|
||||||
final SQLUpdate[] createTableUpdates = {
|
final SQLUpdate[] createTableUpdates = {
|
||||||
new CreateProjectsTableSQLUpdate(),
|
new CreateProjectsTableSQLUpdate(),
|
||||||
|
|
|
@ -26,6 +26,7 @@ import javax.servlet.ServletException;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.BindException;
|
import java.net.BindException;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,7 +51,11 @@ public class GitBridgeServer {
|
||||||
this.port = config.getPort();
|
this.port = config.getPort();
|
||||||
this.rootGitDirectoryPath = config.getRootGitDirectory();
|
this.rootGitDirectoryPath = config.getRootGitDirectory();
|
||||||
RepoStore repoStore = new FSRepoStore(rootGitDirectoryPath);
|
RepoStore repoStore = new FSRepoStore(rootGitDirectoryPath);
|
||||||
DBStore dbStore = new SqliteDBStore(repoStore.getRootDirectory());
|
DBStore dbStore = new SqliteDBStore(
|
||||||
|
Paths.get(
|
||||||
|
repoStore.getRootDirectory().getAbsolutePath()
|
||||||
|
).resolve(".wlgb").resolve("wlgb.db").toFile()
|
||||||
|
);
|
||||||
SwapStore swapStore = new SwapStore() {
|
SwapStore swapStore = new SwapStore() {
|
||||||
@Override
|
@Override
|
||||||
public void upload(String projectName, InputStream uploadStream, long contentLength) {
|
public void upload(String projectName, InputStream uploadStream, long contentLength) {
|
||||||
|
|
Loading…
Reference in a new issue