| 122 | |
| 123 | |
| 124 | class Delete(Definition): |
| 125 | def __init__( |
| 126 | self, |
| 127 | number_of_records: Records, |
| 128 | record_size: RecordSize, |
| 129 | num: int | None = None, |
| 130 | ): |
| 131 | self.number_of_records = number_of_records |
| 132 | self.record_size = record_size |
| 133 | self.num = num |
| 134 | |
| 135 | def generate(self, fields: list[Field]) -> Iterator[RowList]: |
| 136 | |
| 137 | if self.number_of_records == Records.ONE: |
| 138 | values = [ |
| 139 | field.data_type.random_value(rng, self.record_size) |
| 140 | for field in fields |
| 141 | if field.is_key |
| 142 | ] |
| 143 | yield RowList([Row(fields, values, Operation.DELETE)]) |
| 144 | elif self.number_of_records in (Records.SOME, Records.MANY): |
| 145 | for i in range(self.number_of_records.value): |
| 146 | values = [ |
| 147 | field.data_type.random_value(rng, self.record_size) |
| 148 | for field in fields |
| 149 | if field.is_key |
| 150 | ] |
| 151 | yield RowList([Row(fields, values, Operation.DELETE)]) |
| 152 | elif self.number_of_records == Records.ALL: |
| 153 | assert self.num is not None |
| 154 | for i in range(self.num): |
| 155 | values = [ |
| 156 | field.data_type.numeric_value(i) for field in fields if field.is_key |
| 157 | ] |
| 158 | yield RowList([Row(fields, values, Operation.DELETE)]) |
| 159 | else: |
| 160 | raise ValueError(f"Unexpected number of records {self.number_of_records}") |
no outgoing calls
no test coverage detected