Initial Commit
This commit is contained in:
commit
15d6ff6988
26
.gitignore
vendored
Normal file
26
.gitignore
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
*.class
|
||||||
|
*.log
|
||||||
|
*.ctxt
|
||||||
|
.mtj.tmp/
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
hs_err_pid*
|
||||||
|
replay_pid*
|
||||||
|
.idea
|
||||||
|
cmake-build-*/
|
||||||
|
*.iws
|
||||||
|
out/
|
||||||
|
build/
|
||||||
|
work/
|
||||||
|
.idea_modules/
|
||||||
|
atlassian-ide-plugin.xml
|
||||||
|
com_crashlytics_export_strings.xml
|
||||||
|
crashlytics.properties
|
||||||
|
crashlytics-build.properties
|
||||||
|
fabric.properties
|
||||||
|
git.properties
|
68
pom.xml
Normal file
68
pom.xml
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>me.braydon</groupId>
|
||||||
|
<artifactId>hastebin-migrator</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<java.version>8</java.version>
|
||||||
|
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||||
|
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- Lombok -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.28</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Redis -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.lettuce</groupId>
|
||||||
|
<artifactId>lettuce-core</artifactId>
|
||||||
|
<version>6.2.4.RELEASE</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
65
src/main/java/me/braydon/migrator/Main.java
Normal file
65
src/main/java/me/braydon/migrator/Main.java
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
package me.braydon.migrator;
|
||||||
|
|
||||||
|
import io.lettuce.core.RedisClient;
|
||||||
|
import io.lettuce.core.api.StatefulRedisConnection;
|
||||||
|
import io.lettuce.core.api.async.RedisAsyncCommands;
|
||||||
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Braydon
|
||||||
|
*/
|
||||||
|
public class Main {
|
||||||
|
public static void main(@NonNull String[] args) {
|
||||||
|
String redisUri = System.getenv("REDIS_URI"); // Get the redis uri env var
|
||||||
|
assert redisUri != null; // We need this
|
||||||
|
|
||||||
|
File dataDir = new File("data"); // The directory where the files are located
|
||||||
|
if (!dataDir.exists()) {
|
||||||
|
dataDir.mkdirs();
|
||||||
|
System.out.println("Didn't find the './data' directory, created it for you (place files here)");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
File[] files = dataDir.listFiles();
|
||||||
|
if (files == null || (files.length == 0)) { // No files to iterate
|
||||||
|
System.out.println("No files to copy");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try (RedisClient redisClient = RedisClient.create(redisUri);
|
||||||
|
StatefulRedisConnection<String, String> connection = redisClient.connect()
|
||||||
|
) {
|
||||||
|
RedisAsyncCommands<String, String> asyncCommands = connection.async();
|
||||||
|
asyncCommands.multi(); // Start the transaction
|
||||||
|
int copied = 0; // The amount of files copied
|
||||||
|
for (File file : files) {
|
||||||
|
if (file.isDirectory()) { // Only care about files
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String md5Hash = file.getName(); // The name is the md5 hash of the paste
|
||||||
|
try {
|
||||||
|
List<String> fileLines = Files.readAllLines(file.toPath()); // The lines of the line
|
||||||
|
if (fileLines.isEmpty()) { // Skip empty files
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
for (String fileLine : fileLines) {
|
||||||
|
stringBuilder.append(fileLine).append("\n"); // Append the line to the string builder
|
||||||
|
}
|
||||||
|
String fileContent = stringBuilder.toString();
|
||||||
|
System.out.println("Copying '" + md5Hash + "' to Redis"); // Log the copy
|
||||||
|
asyncCommands.set(md5Hash, fileContent); // Copy the file to Redis
|
||||||
|
copied++; // Increment the amount of files copied
|
||||||
|
System.out.println("Done!");
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
asyncCommands.exec(); // Execute the transaction
|
||||||
|
System.out.println("Copied " + copied + "/" + files.length + " files to Redis"); // Log the copied files
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user