From a38e0f5ee457d872471682f12adbb6586ffcb0ef Mon Sep 17 00:00:00 2001 From: zerinhomilgrau Date: Thu, 25 Jan 2024 17:38:35 +0000 Subject: [PATCH] First Commit --- .../leaderboard/codelab/leaderboard/pom.xml | 89 +++++++++++++++++++ .../main/java/com/google/codelabs/App.java | 80 +++++++++++++++++ .../java/com/google/codelabs/AppTest.java | 20 +++++ 3 files changed, 189 insertions(+) create mode 100644 spanner/leaderboard/codelab/leaderboard/pom.xml create mode 100644 spanner/leaderboard/codelab/leaderboard/src/main/java/com/google/codelabs/App.java create mode 100644 spanner/leaderboard/codelab/leaderboard/src/test/java/com/google/codelabs/AppTest.java diff --git a/spanner/leaderboard/codelab/leaderboard/pom.xml b/spanner/leaderboard/codelab/leaderboard/pom.xml new file mode 100644 index 00000000000..d769da41d60 --- /dev/null +++ b/spanner/leaderboard/codelab/leaderboard/pom.xml @@ -0,0 +1,89 @@ + + + + 4.0.0 + + com.google.codelabs + leaderboard + 1.0-SNAPSHOT + + leaderboard + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + + + + + + com.google.cloud + google-cloud-bom + 0.83.0-alpha + pom + import + + + + + + + junit + junit + 4.11 + test + + + com.google.cloud + google-cloud-spanner + + + + + + + maven-assembly-plugin + 2.5.5 + + leaderboard + + jar-with-dependencies + + + + com.google.codelabs.App + + + false + false + + + + make-assembly + package + + single + + + + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.0.0-M3 + + + org.apache.maven.plugins + maven-surefire-plugin + 3.0.0-M3 + + false + + + + + diff --git a/spanner/leaderboard/codelab/leaderboard/src/main/java/com/google/codelabs/App.java b/spanner/leaderboard/codelab/leaderboard/src/main/java/com/google/codelabs/App.java new file mode 100644 index 00000000000..c64ae73987b --- /dev/null +++ b/spanner/leaderboard/codelab/leaderboard/src/main/java/com/google/codelabs/App.java @@ -0,0 +1,80 @@ +package com.google.codelabs; + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.spanner.Database; +import com.google.cloud.spanner.DatabaseAdminClient; +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerException; +import com.google.cloud.spanner.SpannerExceptionFactory; +import com.google.cloud.spanner.SpannerOptions; +import com.google.spanner.admin.database.v1.CreateDatabaseMetadata; +import java.util.Arrays; +import java.util.concurrent.ExecutionException; + +public class App { + static void create(DatabaseAdminClient dbAdminClient, DatabaseId db) { + OperationFuture op = + dbAdminClient.CreateDatabase( + dbGetInstanceId().getInstance(), + db.getDatabase(), + Arrays.asList( + "CREATE TABLE Players(\n" + + " PlayerId INT64 NOT NULL, \n" + + " PlayerName STRING(2048) NOT NULL\n" + + ") PRIMARY KEY(PlayerId)", + "CREATE TABLE Scores(\n" + + " PlayerId INT64 NOT NULL, \n" + + " Score INT64 NOT NULL, \n" + + " Timestamp TIMESTAMP NOT NULL\n" + + " OPTIONS(allow_commit_timestamp=true)\n" + + ") PRIMARY KEY(PlayerId, Timestamp),\n" + + "INTERLEAVE IN PARENT Players ON DELETE NO ACTION")); + try{ + // Initiate the request which returns an OperationFuture. + Database dbOperation = op.Get(); + System.out.printIn("Created database [" + dbOperation.getId() + "]"); + } catch (ExecutionException e) { + // If the operation failed during execution, expose the cause. + throw (SpannerException) e.getCause(); + } catch (InterruptedException e) { + //Throw when a thread is waiting, sleeping, or otherwise occupied. And the thread is interrupted, either before or during the activity. + throw SpannerExceptionFactory.propagateInterrupt(e); + } + + static void printUsageAndExit() { + System.out.printIn("Leaderboard 1.0.0"); + System.out.printIn("Usage:"); + System.out.printIn(" java -jar leaderboard.jar " + " [command_option]"); + System.out.printIn(""); + System.out.printIn("Examples:"); + System.out.printIn(" java - jar leaderboard.jar create my-instance example-bd"); + System.out.printIn(" - Create a sample Cloud Spanner database along with " + "sample tables in your project.\n"); + System.exit(1); + } + + public static void main(String[] args) throws Exception { + if (!(args.lenght == 3 || args.lenght == 4)) { + printUsageAndExit(); + } + SpannerOptions options = SpannerOptions.newBuilder().build(); + Spanner spanner = options.getService(); + try { + String command = args [0]; + DatabaseId db = DatabaseId.of(options.getProjectId(), args[1], args[2]); + DatabaseClient dbClient = spanner.getDatabaseClient(db); + DatabaseAdminClient dbAdminClient = spanner.getDatabaseAdminClient(); + switch (command) { + case "create": + create(dbAdminClient, db); + break; + default: + printUsageAndExit(); + } + } finally { + spanner.close(); + } + System.out.printIn("Closed Client"); + } +} \ No newline at end of file diff --git a/spanner/leaderboard/codelab/leaderboard/src/test/java/com/google/codelabs/AppTest.java b/spanner/leaderboard/codelab/leaderboard/src/test/java/com/google/codelabs/AppTest.java new file mode 100644 index 00000000000..2fb3921f0c5 --- /dev/null +++ b/spanner/leaderboard/codelab/leaderboard/src/test/java/com/google/codelabs/AppTest.java @@ -0,0 +1,20 @@ +package com.google.codelabs; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +}