class Update(Statement): def __init__(self, column_family, keyspace=None): Statement.__init__(self, column_family, keyspace) self.assignments = Assignments() self.conditions = None self.options = None def using(self, **kwargs): self.options = Using(**kwargs) return self def set(self, **kwargs): self.assignments.add(Set(**kwargs)) return self def set_at(self, name, key, value): self.assignments.add(SetAt(name, key, value)) return self def add(self, name, value): self.assignments.add(Add(name, value)) return self def subtract(self, name, value): self.assignments.add(Subtract(name, value)) return self def where(self, *args): self.conditions = Where(*args) return self @property def cql(self): query = 'UPDATE {}'.format(self.path) if self.options: query = '{} {}'.format(query, self.options.cql) query = '{} SET {} WHERE {}'.format(query, self.assignments.cql, self.conditions.cql) return query @property def args(self): args = self.options.values if self.options else [] args.extend(self.assignments.values) args.extend(self.conditions.values) return args def validate(self): self.assignments.validate() if self.conditions is None: raise ValidationError('conditions: {}'.format(self.conditions))