diff --git a/dynamodb/storage.odin b/dynamodb/storage.odin index 4b9edbf..63a768d 100644 --- a/dynamodb/storage.odin +++ b/dynamodb/storage.odin @@ -290,7 +290,7 @@ serialize_table_metadata :: proc(metadata: ^Table_Metadata) -> ([]byte, bool) { } strings.write_string(&gsi_builder, "]") } - strings.write_string(&gsi_builder, "}") + strings.write_string(&gsi_builder, "}}") } strings.write_string(&gsi_builder, "]") diff --git a/main.odin b/main.odin index 80c22df..4ddb8aa 100644 --- a/main.odin +++ b/main.odin @@ -190,6 +190,15 @@ handle_create_table :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP_Req } } + if gsi_val, found2 := root["GlobalSecondaryIndexes"]; found2 { + if gsi_arr, ok2 := gsi_val.(json.Array); ok2 && len(gsi_arr) > 0 { + if _, has := gsis.?; !has { + make_error_response(response, .ValidationException, "Invalid GlobalSecondaryIndexes definition") + return + } + } + } + // Create the table desc, create_err := dynamodb.create_table(engine, string(table_name), key_schema, attr_defs, gsis) if create_err != .None {