def test_execute_select_process_result_value(mocked_client, mocker) -> None: mocked_client.execute_statement.return_value = { 'numberOfRecordsUpdated': 0, 'records': [[{'longValue': 1}, {'stringValue': 'cat'}]], 'columnMetadata': [ { "arrayBaseColumnType": 0, "isAutoIncrement": False, "isCaseSensitive": False, "isCurrency": False, "isSigned": True, "label": "id", "name": "id", "nullable": 1, "precision": 11, "scale": 0, "schemaName": "", "tableName": "pets", "type": 4, "typeName": "INT", }, { "arrayBaseColumnType": 0, "isAutoIncrement": False, "isCaseSensitive": False, "isCurrency": False, "isSigned": False, "label": "name", "name": "name", "nullable": 1, "precision": 255, "scale": 0, "schemaName": "", "tableName": "pets", "type": 12, "typeName": "VARCHAR", }, ], } data_api = DataAPI( resource_arn='arn:aws:rds:dummy', secret_arn='dummy', database='test', client=mocked_client, ) assert list(data_api.execute(Select([Pets]))[0]) == [1, 'my_type_cat'] assert mocked_client.execute_statement.call_args == mocker.call( continueAfterTimeout=True, database='test', includeResultMetadata=True, resourceArn='arn:aws:rds:dummy', secretArn='dummy', sql="""SELECT pets.id, pets.name FROM pets""", )
def test_execute_select(mocked_client, mocker) -> None: mocked_client.execute_statement.return_value = { 'numberOfRecordsUpdated': 0, 'records': [[{'longValue': 1}, {'stringValue': 'cat'}]], } data_api = DataAPI( resource_arn='dummy', secret_arn='dummy', database='test', client=mocked_client ) assert list(data_api.execute("select * from pets")[0]) == [1, 'cat'] assert mocked_client.execute_statement.call_args == mocker.call( continueAfterTimeout=True, database='test', includeResultMetadata=True, resourceArn='dummy', secretArn='dummy', sql='select * from pets', )
def test_execute_insert_parameters(mocked_client, mocker) -> None: mocked_client.execute_statement.return_value = { 'generatedFields': [], 'numberOfRecordsUpdated': 1, } data_api = DataAPI( resource_arn='arn:aws:rds:dummy', secret_arn='dummy', database='test', client=mocked_client, ) results = data_api.execute( "insert into pets values(:id, :name)", { 'id': 1, 'name': 'cat' }, transaction_id='abc', ) assert results.generated_fields == [] assert results.number_of_records_updated == 1 assert mocked_client.execute_statement.call_args == mocker.call( continueAfterTimeout=True, includeResultMetadata=True, parameters=[ { 'name': 'id', 'value': { 'longValue': 1 } }, { 'name': 'name', 'value': { 'stringValue': 'cat' } }, ], resourceArn='arn:aws:rds:dummy', secretArn='dummy', transactionId='abc', sql="insert into pets values(:id, :name)", database='test', )
def test_execute_insert(mocked_client, mocker) -> None: mocked_client.execute_statement.return_value = { 'generatedFields': [], 'numberOfRecordsUpdated': 1, } data_api = DataAPI( resource_arn='dummy', secret_arn='dummy', database='test', client=mocked_client ) results = data_api.execute( "insert into pets values(1, 'cat')", transaction_id='abc' ) assert results.generated_fields == [] assert results.number_of_records_updated == 1 assert mocked_client.execute_statement.call_args == mocker.call( continueAfterTimeout=True, includeResultMetadata=True, resourceArn='dummy', secretArn='dummy', transactionId='abc', sql="insert into pets values(1, 'cat')", database='test', )
def test_execute_select_as_model(mocked_client, mocker) -> None: mocked_client.execute_statement.return_value = { "columnMetadata": [ { "arrayBaseColumnType": 0, "isAutoIncrement": False, "isCaseSensitive": False, "isCurrency": False, "isSigned": True, "label": "id", "name": "id", "nullable": 1, "precision": 11, "scale": 0, "schemaName": "", "tableName": "users", "type": 4, "typeName": "INT", }, { "arrayBaseColumnType": 0, "isAutoIncrement": False, "isCaseSensitive": False, "isCurrency": False, "isSigned": False, "label": "name", "name": "name", "nullable": 1, "precision": 255, "scale": 0, "schemaName": "", "tableName": "users", "type": 12, "typeName": "VARCHAR", }, ], 'numberOfRecordsUpdated': 0, 'records': [[{ 'longValue': 1 }, { 'stringValue': 'cat' }]], } data_api = DataAPI( resource_arn='arn:aws:rds:dummy', secret_arn='dummy', database='test', client=mocked_client, ) class Pet(BaseModel): id: int name: str result = data_api.execute("select * from pets") assert len(result) == 1 assert result[0].model(Pet) == Pet(name='cat', id=1) assert mocked_client.execute_statement.call_args == mocker.call( continueAfterTimeout=True, database='test', includeResultMetadata=True, resourceArn='arn:aws:rds:dummy', secretArn='dummy', sql='select * from pets', )
def add_user(data_api: DataAPI, id_, name): data_api.execute(f"insert into pets values({id_}, {name})")