shes working
This commit is contained in:
38
main.odin
38
main.odin
@@ -219,6 +219,7 @@ handle_delete_table :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP_Req
|
||||
make_error_response(response, .ValidationException, "Invalid request or missing TableName")
|
||||
return
|
||||
}
|
||||
defer delete(table_name)
|
||||
|
||||
err := dynamodb.delete_table(engine, table_name)
|
||||
if err != .None {
|
||||
@@ -267,16 +268,22 @@ handle_describe_table :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP_R
|
||||
|
||||
for ks, i in metadata.key_schema {
|
||||
if i > 0 do strings.write_string(&builder, ",")
|
||||
fmt.sbprintf(&builder, `{"AttributeName":"%s","KeyType":"%s"}`,
|
||||
ks.attribute_name, dynamodb.key_type_to_string(ks.key_type))
|
||||
strings.write_string(&builder, `{"AttributeName":"`)
|
||||
strings.write_string(&builder, ks.attribute_name)
|
||||
strings.write_string(&builder, `","KeyType":"`)
|
||||
strings.write_string(&builder, dynamodb.key_type_to_string(ks.key_type))
|
||||
strings.write_string(&builder, `"}`)
|
||||
}
|
||||
|
||||
strings.write_string(&builder, `],"AttributeDefinitions":[`)
|
||||
|
||||
for ad, i in metadata.attribute_definitions {
|
||||
if i > 0 do strings.write_string(&builder, ",")
|
||||
fmt.sbprintf(&builder, `{"AttributeName":"%s","AttributeType":"%s"}`,
|
||||
ad.attribute_name, dynamodb.scalar_type_to_string(ad.attribute_type))
|
||||
strings.write_string(&builder, `{"AttributeName":"`)
|
||||
strings.write_string(&builder, ad.attribute_name)
|
||||
strings.write_string(&builder, `","AttributeType":"`)
|
||||
strings.write_string(&builder, dynamodb.scalar_type_to_string(ad.attribute_type))
|
||||
strings.write_string(&builder, `"}`)
|
||||
}
|
||||
|
||||
strings.write_string(&builder, `]`)
|
||||
@@ -291,8 +298,11 @@ handle_describe_table :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP_R
|
||||
strings.write_string(&builder, `","KeySchema":[`)
|
||||
for ks, ki in gsi.key_schema {
|
||||
if ki > 0 do strings.write_string(&builder, ",")
|
||||
fmt.sbprintf(&builder, `{"AttributeName":"%s","KeyType":"%s"}`,
|
||||
ks.attribute_name, dynamodb.key_type_to_string(ks.key_type))
|
||||
strings.write_string(&builder, `{"AttributeName":"`)
|
||||
strings.write_string(&builder, ks.attribute_name)
|
||||
strings.write_string(&builder, `","KeyType":"`)
|
||||
strings.write_string(&builder, dynamodb.key_type_to_string(ks.key_type))
|
||||
strings.write_string(&builder, `"}`)
|
||||
}
|
||||
strings.write_string(&builder, `],"Projection":{"ProjectionType":"`)
|
||||
strings.write_string(&builder, projection_type_to_string(gsi.projection.projection_type))
|
||||
@@ -455,6 +465,7 @@ handle_get_item :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP_Request
|
||||
make_error_response(response, .ValidationException, "Invalid request or missing TableName")
|
||||
return
|
||||
}
|
||||
defer delete(table_name)
|
||||
|
||||
key, key_ok := dynamodb.parse_key_from_request(request.body)
|
||||
if !key_ok {
|
||||
@@ -493,6 +504,7 @@ handle_delete_item :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP_Requ
|
||||
make_error_response(response, .ValidationException, "Invalid request or missing TableName")
|
||||
return
|
||||
}
|
||||
defer delete(table_name)
|
||||
|
||||
key, key_ok := dynamodb.parse_key_from_request(request.body)
|
||||
if !key_ok {
|
||||
@@ -939,9 +951,13 @@ handle_batch_write_item :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP
|
||||
item_json := dynamodb.serialize_item(req.item)
|
||||
switch req.type {
|
||||
case .Put:
|
||||
fmt.sbprintf(&builder, `{"PutRequest":{"Item":%s}}`, item_json)
|
||||
strings.write_string(&builder, `{"PutRequest":{"Item":`)
|
||||
strings.write_string(&builder, item_json)
|
||||
strings.write_string(&builder, "}}")
|
||||
case .Delete:
|
||||
fmt.sbprintf(&builder, `{"DeleteRequest":{"Key":%s}}`, item_json)
|
||||
strings.write_string(&builder, `{"DeleteRequest":{"Key":`)
|
||||
strings.write_string(&builder, item_json)
|
||||
strings.write_string(&builder, "}}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1086,7 +1102,9 @@ handle_batch_get_item :: proc(engine: ^dynamodb.Storage_Engine, request: ^HTTP_R
|
||||
if ti > 0 {
|
||||
strings.write_string(&builder, ",")
|
||||
}
|
||||
fmt.sbprintf(&builder, `"%s":{"Keys":[`, table_req.table_name)
|
||||
strings.write_string(&builder, `"`)
|
||||
strings.write_string(&builder, table_req.table_name)
|
||||
strings.write_string(&builder, `":{"Keys":["`)
|
||||
|
||||
for key, ki in table_req.keys {
|
||||
if ki > 0 {
|
||||
@@ -1650,6 +1668,8 @@ handle_storage_error :: proc(response: ^HTTP_Response, err: dynamodb.Storage_Err
|
||||
make_error_response(response, .ValidationException, "One or more required key attributes are missing")
|
||||
case .Invalid_Key:
|
||||
make_error_response(response, .ValidationException, "Invalid key: type mismatch or malformed key value")
|
||||
case .Validation_Error:
|
||||
make_error_response(response, .ValidationException, "Invalid request: type mismatch or incompatible operand")
|
||||
case .Serialization_Error:
|
||||
make_error_response(response, .InternalServerError, "Internal serialization error")
|
||||
case .RocksDB_Error:
|
||||
|
||||
Reference in New Issue
Block a user