Skip to content

Commit b57ed4d

Browse files
committed
misc refactoring (#140)
* add self host params * add random port for main * and so the crazy refactoring process sees the sunlight after some months in the dark! * Too lazy to write descriptive message * better ignores * Fixed what was broken. * bad things happen when you forget about that one little change you made ages ago * I'm sorry. * Reset error count between rows. herpderp * squash me * I am sorry * add keys command
1 parent 5df3b03 commit b57ed4d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+190
-127
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ on:
33
push:
44
branches:
55
- master
6+
- develop
67
pull_request:
78
types: [opened, synchronize, reopened]
89
jobs:

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ task fatJar(type: Jar) {
3131
dependsOn(':config:build')
3232
dependsOn(':util:build')
3333
dependsOn(':resp-protocol:build')
34-
dependsOn(':store:build')
34+
dependsOn(':storage:build')
3535
dependsOn(':core:build')
3636
manifest.from jar.manifest
3737
classifier = 'all'
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,36 @@
11
package dev.keva.app;
22

3+
import lombok.SneakyThrows;
34
import lombok.val;
45
import org.junit.jupiter.api.Test;
56
import redis.clients.jedis.Jedis;
67

8+
import java.net.ServerSocket;
79
import java.util.concurrent.TimeUnit;
810

911
import static org.junit.jupiter.api.Assertions.assertEquals;
1012

1113
class ApplicationTest {
1214

13-
public static final String[] ARGS = new String[0];
15+
public static int port = getAvailablePort();
16+
public static final String[] ARGS = {"--p", Integer.toString(port)};
1417

1518
@Test
1619
void testMain() throws Exception {
1720
new Thread(() -> Application.main(ARGS)).start();
1821
TimeUnit.SECONDS.sleep(5);
1922

20-
val jedis = new Jedis("localhost", 6379);
23+
val jedis = new Jedis("localhost", port);
2124
val pong = jedis.ping();
2225
assertEquals("PONG", pong);
2326
}
27+
28+
@SneakyThrows
29+
public static int getAvailablePort() {
30+
final int port;
31+
try (val serverSocket = new ServerSocket(0)) {
32+
port = serverSocket.getLocalPort();
33+
}
34+
return port;
35+
}
2436
}

core/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ dependencies {
1111
implementation project(':util')
1212
implementation project(':config')
1313
implementation project(':resp-protocol')
14-
implementation project(':store')
14+
implementation project(':storage')
1515

1616
implementation 'dev.keva:keva-ioc:1.0.0'
1717

core/src/main/java/dev/keva/core/command/impl/generic/Del.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import dev.keva.ioc.annotation.Autowired;
88
import dev.keva.ioc.annotation.Component;
99
import dev.keva.protocol.resp.reply.IntegerReply;
10-
import dev.keva.store.KevaDatabase;
10+
import dev.keva.storage.KevaDatabase;
1111

1212
import static dev.keva.core.command.annotation.ParamLength.Type.AT_LEAST;
1313

core/src/main/java/dev/keva/core/command/impl/generic/Dump.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import dev.keva.ioc.annotation.Component;
88
import dev.keva.protocol.resp.reply.BulkReply;
99
import dev.keva.protocol.resp.reply.Reply;
10-
import dev.keva.store.KevaDatabase;
10+
import dev.keva.storage.KevaDatabase;
1111

1212
import java.util.Base64;
1313

core/src/main/java/dev/keva/core/command/impl/generic/Exists.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import dev.keva.ioc.annotation.Component;
88
import dev.keva.protocol.resp.reply.IntegerReply;
99
import dev.keva.protocol.resp.reply.Reply;
10-
import dev.keva.store.KevaDatabase;
10+
import dev.keva.storage.KevaDatabase;
1111

1212
import static dev.keva.core.command.annotation.ParamLength.Type.AT_LEAST;
1313

core/src/main/java/dev/keva/core/command/impl/generic/Expire.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import dev.keva.ioc.annotation.Autowired;
77
import dev.keva.ioc.annotation.Component;
88
import dev.keva.protocol.resp.reply.IntegerReply;
9-
import dev.keva.store.KevaDatabase;
9+
import dev.keva.storage.KevaDatabase;
1010

1111
import java.nio.charset.StandardCharsets;
1212

core/src/main/java/dev/keva/core/command/impl/generic/ExpireAt.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import dev.keva.ioc.annotation.Autowired;
77
import dev.keva.ioc.annotation.Component;
88
import dev.keva.protocol.resp.reply.IntegerReply;
9-
import dev.keva.store.KevaDatabase;
9+
import dev.keva.storage.KevaDatabase;
1010

1111
import java.nio.charset.StandardCharsets;
1212

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package dev.keva.core.command.impl.generic;
2+
3+
import dev.keva.core.command.annotation.CommandImpl;
4+
import dev.keva.core.command.annotation.Execute;
5+
import dev.keva.core.command.annotation.ParamLength;
6+
import dev.keva.core.exception.CommandException;
7+
import dev.keva.ioc.annotation.Autowired;
8+
import dev.keva.ioc.annotation.Component;
9+
import dev.keva.protocol.resp.reply.BulkReply;
10+
import dev.keva.protocol.resp.reply.MultiBulkReply;
11+
import dev.keva.storage.KevaDatabase;
12+
13+
import java.nio.charset.StandardCharsets;
14+
import java.util.Set;
15+
16+
@Component
17+
@CommandImpl("keys")
18+
@ParamLength(1)
19+
public class Key {
20+
private final KevaDatabase database;
21+
22+
@Autowired
23+
public Key(KevaDatabase database) {
24+
this.database = database;
25+
}
26+
27+
@Execute
28+
public MultiBulkReply execute(byte[] key) {
29+
String keyStr = new String(key, StandardCharsets.UTF_8);
30+
if (!keyStr.equals("*")) {
31+
throw new CommandException("Only support * pattern for now");
32+
}
33+
Set<byte[]> keys = database.keySet();
34+
BulkReply[] replies = new BulkReply[keys.size()];
35+
int i = 0;
36+
for (byte[] k : keys) {
37+
replies[i++] = new BulkReply(k);
38+
}
39+
return new MultiBulkReply(replies);
40+
}
41+
}

0 commit comments

Comments
 (0)