@@ -263,36 +263,30 @@ def _batch_delete_pointers(
263263def _delete_pointers_by_id (
264264 table_name : str ,
265265 ods_code : str ,
266- pointers_to_delete : List [str ] | None = None ,
266+ pointers_to_delete : list [str ] | None = None ,
267267 pointers_file : str | None = None ,
268268) -> None :
269269 """
270- Delete pointers from DynamoDB table.
270+ Delete DynamoDB pointers by ID with ODS code validation.
271+
272+ REQUIRED: Provide either --pointers_to_delete OR --pointers_file (but not both)
271273
272274 Can accept pointers as:
273- - list of strings: pointers_to_delete=["id1", "id2"]
274- - JSON file: pointers_file=/path/to/pointers.json (array of objects with "id" field)
275- - text file: pointers_file=/path/to/ids.txt (one id per line)
276-
277- Parameters:
278- - table_name: DynamoDB table name
279- - ods_code: ODS code of the organisation that the pointers belong to
280- - pointers_to_delete: list of pointer ids to delete
281- - pointers_file: path to JSON file (array of objects with "id" field) or text file (one id per line)
282-
283- Sample usage:
284- - Delete by list of ids:
285- python delete_pointers_by_id.py --table_name MyTable --ods_code ABC123 --pointers_to_delete '["ABC123-12345678910", "ABC123-109876543210"]'
286- - Delete by JSON file:
287- python delete_pointers_by_id.py --table_name MyTable --ods_code ABC123 --pointers_file /path/to/pointers.json
288- - Delete by text file:
289- python delete_pointers_by_id.py --table_name MyTable --ods_code ABC123 --pointers_file /path/to/ids.txt
275+ - list of strings: --pointers_to_delete '["ABC123-12345678910", "ABC123-109876543210"]'
276+ - JSON file: --pointers_file /path/to/pointers.json (array of objects with "id" field)
277+ - text file: --pointers_file /path/to/ids.txt (one id per line)
278+
279+ Args:
280+ table_name: DynamoDB table name
281+ ods_code: ODS code to validate pointer IDs against
282+ pointers_to_delete: List of pointer IDs as JSON string
283+ pointers_file: Path to file containing pointer IDs
290284 """
291285 if pointers_to_delete is None and pointers_file is None :
292- raise ValueError ("Provide either pointers_to_delete or pointers_file" )
286+ raise ValueError ("Must provide either -- pointers_to_delete or -- pointers_file" )
293287
294288 if pointers_to_delete is not None and pointers_file is not None :
295- raise ValueError ("Provide either pointers_to_delete or pointers_file, not both " )
289+ raise ValueError ("Cannot provide both -- pointers_to_delete and -- pointers_file" )
296290
297291 if pointers_file :
298292 pointers_to_delete = _load_pointers_from_file (pointers_file )
0 commit comments