Open
Description
Multiple logic files (as described in the docs/logic/readme.md
) can result in duplicated logic in logic/logic_discovery
, e.g.:
import datetime
from decimal import Decimal
from logic_bank.exec_row_logic.logic_row import LogicRow
from logic_bank.extensions.rule_extensions import RuleExtension
from logic_bank.logic_bank import Rule
import database.models as models
import api.system.opt_locking.opt_locking as opt_locking
from security.system.authorization import Grant, Security
import logging
logger = logging.getLogger(__name__)
def declare_logic():
''' Declarative multi-table derivations and constraints, extensible with Python.
Brief background: see readme_declare_logic.md
Your Code Goes Here - Use code completion (Rule.) to declare rules
'''
# this logic is automatically discovered by declare_logic.py#discover_logic()
# Logic from GenAI: (or, use your IDE w/ code completion)
from database.models import Product, Customer
# Ensure customer names are not 'x'.
Rule.constraint(validate=Customer,
as_condition=lambda row: row.name.lower() != 'x',
error_msg="Customer name cannot be 'x'")
# Ensure credit limits are non-negative.
Rule.constraint(validate=Customer,
as_condition=lambda row: row.credit_limit >= 0,
error_msg="Credit limit cannot be negative")
# Ensure product names are not 'x'.
Rule.constraint(validate=Product,
as_condition=lambda row: row.name.lower() != 'x',
error_msg="Product name cannot be 'x'")
# Ensure product prices are positive.
Rule.constraint(validate=Product,
as_condition=lambda row: row.unit_price > 0,
error_msg="Product price must be positive")
# End Logic from GenAI
# Logic from GenAI February 21, 2025 09:33:23:
Metadata
Metadata
Assignees
Labels
No labels