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
}