Skip to main content

Conditional Writes

All write operations (put, update, delete) support condition= (AND logic) and condition_or= (OR logic).

Condition Syntax

# Only create if not exists (idempotent put)
try:
orders.put(
user_id="usr_123", order_id="ord_789",
status="NEW",
condition={"user_id__not_exists": True}
)
except ConditionError:
print("Order already exists")

# Only update if current status matches
orders.update(
user_id="usr_123", order_id="ord_789",
set={"status": "SHIPPED"},
condition={"status__eq": "PENDING"}
)

# Only delete if condition is met
orders.delete(
user_id="usr_123", order_id="ord_789",
condition={"status__eq": "CANCELLED"}
)

OR Conditions

# Update if status is PENDING or DRAFT
orders.update(
user_id="usr_123", order_id="ord_789",
set={"status": "CANCELLED"},
condition_or=[
{"status__eq": "PENDING"},
{"status__eq": "DRAFT"}
]
)

Combined AND + OR

orders.update(
user_id="usr_123", order_id="ord_789",
set={"status": "SHIPPED"},
condition={"version__eq": 3},
condition_or=[
{"status__eq": "PENDING"},
{"status__eq": "CONFIRMED"}
]
)
# Evaluates: (version = 3) AND (status = PENDING OR status = CONFIRMED)