func createDatabase()

in inventory-service/spanner/main.go [169:201]


func createDatabase(db string) error {
	ctx := context.Background()
	matches := regexp.MustCompile("^(.*)/databases/(.*)$").FindStringSubmatch(db)
	if matches == nil || len(matches) != 3 {
		return fmt.Errorf("invalid database id %s", db)
	}

	adminClient, err := database.NewDatabaseAdminClient(ctx)
	if err != nil {
		return err
	}
	defer adminClient.Close()
	log.Print("Creating Database and table")
	op, err := adminClient.CreateDatabase(ctx, &adminpb.CreateDatabaseRequest{
		Parent:          matches[1],
		CreateStatement: "CREATE DATABASE `" + matches[2] + "`",
		ExtraStatements: []string{
			`CREATE TABLE InventoryHistory (
				ItemRowID STRING (36) NOT NULL,
				ItemID	INT64 NOT NULL,
				InventoryChange  INT64,
				TimeStamp   TIMESTAMP,
			) PRIMARY KEY (ItemRowID)`,
		},
	})
	if err != nil {
		return err
	}
	if _, err := op.Wait(ctx); err != nil {
		return err
	}
	return nil
}