more GSI fixes
This commit is contained in:
@@ -175,15 +175,31 @@ gsi_batch_write_entries :: proc(
|
||||
return .None
|
||||
}
|
||||
|
||||
base_key, base_ok := key_from_item(item, metadata.key_schema)
|
||||
if !base_ok {
|
||||
return .Missing_Key_Attribute
|
||||
}
|
||||
defer key_destroy(&base_key)
|
||||
|
||||
base_vals, base_vals_ok := key_get_values(&base_key)
|
||||
if !base_vals_ok {
|
||||
return .Invalid_Key
|
||||
}
|
||||
|
||||
for &gsi in gsis {
|
||||
// Extract GSI key from item
|
||||
gsi_kv, kv_ok := gsi_extract_key_values(item, gsi.key_schema)
|
||||
if !kv_ok {
|
||||
continue // Sparse: item doesn't have GSI PK, skip
|
||||
}
|
||||
if !kv_ok do continue // item doesn't have GSI PK, skip
|
||||
|
||||
// Build GSI storage key
|
||||
gsi_storage_key := build_gsi_key(table_name, gsi.index_name, gsi_kv.pk, gsi_kv.sk)
|
||||
gsi_storage_key := build_gsi_key(
|
||||
table_name,
|
||||
gsi.index_name,
|
||||
gsi_kv.pk,
|
||||
gsi_kv.sk,
|
||||
base_vals.pk,
|
||||
base_vals.sk,
|
||||
)
|
||||
defer delete(gsi_storage_key)
|
||||
|
||||
// Build projected item
|
||||
@@ -218,13 +234,31 @@ gsi_batch_delete_entries :: proc(
|
||||
return .None
|
||||
}
|
||||
|
||||
for &gsi in gsis {
|
||||
gsi_kv, kv_ok := gsi_extract_key_values(old_item, gsi.key_schema)
|
||||
if !kv_ok {
|
||||
continue // Item didn't have a GSI entry
|
||||
}
|
||||
base_key, base_ok := key_from_item(old_item, metadata.key_schema)
|
||||
if !base_ok {
|
||||
return .Missing_Key_Attribute
|
||||
}
|
||||
defer key_destroy(&base_key)
|
||||
|
||||
gsi_storage_key := build_gsi_key(table_name, gsi.index_name, gsi_kv.pk, gsi_kv.sk)
|
||||
base_vals, base_vals_ok := key_get_values(&base_key)
|
||||
if !base_vals_ok {
|
||||
return .Invalid_Key
|
||||
}
|
||||
|
||||
for &gsi in gsis {
|
||||
// Extract GSI key from item
|
||||
gsi_kv, kv_ok := gsi_extract_key_values(old_item, gsi.key_schema)
|
||||
if !kv_ok do continue // old item doesn't have GSI PK, skip
|
||||
|
||||
// Build GSI storage key
|
||||
gsi_storage_key := build_gsi_key(
|
||||
table_name,
|
||||
gsi.index_name,
|
||||
gsi_kv.pk,
|
||||
gsi_kv.sk,
|
||||
base_vals.pk,
|
||||
base_vals.sk,
|
||||
)
|
||||
defer delete(gsi_storage_key)
|
||||
|
||||
// Add to batch (not written yet)
|
||||
|
||||
Reference in New Issue
Block a user