コード例 #1
0
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))