From 1302874708a3b70c7f4bff9a621b3f65d66e78c7 Mon Sep 17 00:00:00 2001 From: Otavio Santana Date: Tue, 28 Nov 2023 17:51:30 +0000 Subject: [PATCH] feat: create create table operatioN Signed-off-by: Otavio Santana --- .../java/expert/os/harperdb/CreateTable.java | 29 +++++++++++++++++++ .../os/harperdb/CreateTableBuilder.java | 5 +--- .../main/java/expert/os/harperdb/Server.java | 13 +++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/expert/os/harperdb/CreateTable.java b/core/src/main/java/expert/os/harperdb/CreateTable.java index 7d5095c..b2f6800 100644 --- a/core/src/main/java/expert/os/harperdb/CreateTable.java +++ b/core/src/main/java/expert/os/harperdb/CreateTable.java @@ -2,6 +2,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + /** * Represents the "create table" operation in HarperDB. */ @@ -56,4 +58,31 @@ public String table() { public String id() { return id; } + + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } + CreateTable that = (CreateTable) object; + return Objects.equals(schema, that.schema) && Objects.equals(table, that.table) + && Objects.equals(id, that.id); + } + + @Override + public int hashCode() { + return Objects.hash(schema, table, id); + } + + @Override + public String toString() { + return "CreateTable{" + + "schema='" + schema + '\'' + + ", table='" + table + '\'' + + ", id='" + id + '\'' + + '}'; + } } diff --git a/core/src/main/java/expert/os/harperdb/CreateTableBuilder.java b/core/src/main/java/expert/os/harperdb/CreateTableBuilder.java index e53854b..87c291f 100644 --- a/core/src/main/java/expert/os/harperdb/CreateTableBuilder.java +++ b/core/src/main/java/expert/os/harperdb/CreateTableBuilder.java @@ -35,10 +35,7 @@ private TableBuilder(String schema, String table, Server server) { } public boolean id(String id) { Objects.requireNonNull(id, "id is required"); - HttpRequest request = this.server.createRequest() - .POST(ofByteArray(INSTANCE.writeValueAsBytes(new CreateSchema(schema)))) - .build(); - return false; + return this.server.createTable(new CreateTable(schema, table, id)); } } diff --git a/core/src/main/java/expert/os/harperdb/Server.java b/core/src/main/java/expert/os/harperdb/Server.java index 2a9886e..fb10740 100644 --- a/core/src/main/java/expert/os/harperdb/Server.java +++ b/core/src/main/java/expert/os/harperdb/Server.java @@ -62,6 +62,18 @@ public CreateTableBuilder table(String schema){ return new CreateTableBuilder(schema, this); } + boolean createTable(CreateTable operation) { + HttpRequest request = createRequest() + .POST(ofByteArray(INSTANCE.writeValueAsBytes(operation))) + .build(); + try { + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofInputStream()); + return HttpStatus.OK.isEquals(response); + } catch (IOException| InterruptedException e) { + throw new HarperDBException("There is an issue to create the table: " + operation, e); + } + } + HttpRequest.Builder createRequest() { return HttpRequest.newBuilder() @@ -71,4 +83,5 @@ HttpRequest.Builder createRequest() { } + }