SECTION V: Persistence, Connectors, and Native ORM AVAP is designed to be database-agnostic. It enables data manipulation through three layers: the universal connector, simplified ORM commands, and direct SQL execution. 5.1 The Universal Connector (avapConnector) The avapConnector command is the entry point for any external integration. It uses a Connection Token system (Base64) that encapsulates configuration details (host, port, credentials, driver) to keep code clean and secure. Interface connector_variable = avapConnector("BASE64_TOKEN") Connector Object Capabilities Once instantiated, the variable behaves as an object with dynamic methods: Database Connectors: Expose the .query(sql_string) method, which returns objects or lists depending on the result set. API Connectors (Twilio, Slack, etc.): Expose native service methods (e.g., .send_sms()). Example: Dynamic Assignment with Connectors // Instantiate the connection db = avapConnector("REJfQ09OTkVDVE9SM...") // Execute query and use Section I dynamic evaluation users = db.query("SELECT * FROM users") first_admin = users[0].name if users[0].role == 'admin' else 'N/A' addResult(first_admin) 5.2 Native ORM Layer (ormCheckTable / ormDirect) For quick operations on the local or default database cluster, AVAP provides system-level commands that do not require prior instantiation. 5.2.1 ormCheckTable Verifies the existence of a database structure. It is critical for installation scripts or automated migrations. Interface: ormCheckTable(table_name, target_var) Response: target_var receives the string values "True" or "False". 5.2.2 ormDirect Executes SQL statements directly. Unlike .query(), it is optimized for statements that do not necessarily return rows (such as INSERT, UPDATE, or CREATE TABLE). Interface: ormDirect(statement, target_var) Interpolation Usage Example: ormDirect("UPDATE users SET login = '%s' WHERE id = %s" % (now, id), result) 5.3 Data Access Abstraction (Implicit Commands) AVAP includes specialized commands for common CRUD operations, reducing the need to write manual SQL and mitigating injection risks. ormAccessSelect Performs filtered queries returning a list-of-objects structure. Syntax: ormAccessSelect(table, filters, target) ormAccessInsert / ormAccessUpdate Manages data persistence. If used on an object that already has an ID, Update synchronizes changes; otherwise, Insert creates the record. 5.4 Dynamic Query Formatting (Injection Prevention) As detailed in Section I, the AVAP engine processes SQL strings before sending them to the database engine. The official recommendation is to always use interpolation with the % operator to ensure proper handling of data types (Strings vs Integers) by the driver. Recommended Secure Pattern sql = "SELECT * FROM %s WHERE status = '%s'" % (table_name, recovered_status) res = db.query(sql) 5.5 Cryptographic Security Integration (encodeSHA256) Within the persistence flow, AVAP provides native tools to secure sensitive data before it is written to disk. Interface encodeSHA256(source_text, target_variable) Complete Registration Flow (Final Example) This example integrates Sections I, II, III, and V: // II: Input capture addParam("pass", p) addParam("user", u) // I & V: Processing and security encodeSHA256(p, secure_pass) // V: Insertion sql = "INSERT INTO users (username, password) VALUES ('%s', '%s')" % (u, secure_pass) ormDirect(sql, db_result) // III & II: Response if(db_result, "Success", "=") addVar(msg, "User created") addResult(msg) end() Examples 1. Connector Instantiation Code snippet my_db = avapConnector("VE9LRU5fREVCX0RFU0FSUk9MTE8=") 2. Record Retrieval Code snippet rows = my_db.query("SELECT id, name FROM users") addResult(rows) 3. Direct Command Execution Code snippet ormDirect("TRUNCATE TABLE temp_cache", status) 4. Structure Verification Code snippet ormCheckTable("inventory", exists) if(exists, "False", "==") ormDirect("CREATE TABLE inventory...", r) end() 5. Secure Update (Interpolation) Code snippet sql = "UPDATE users SET login_count = %s WHERE email = '%s'" % (count, email) ormDirect(sql, res) 6. JSON/DB Object Navigation Code snippet found_id = query_result[0].id addResult(found_id) 7. ORM Select with Filter Code snippet ormAccessSelect("orders", {"status": "pending"}, list_result) addResult(list_result) 8. Processing Database Results Code snippet records = db.query("SELECT...") startLoop(i, 0, len(records)) name = records[i].name endLoop() 9. Cryptographic Persistence Code snippet encodeSHA256(password_raw, hashed) ormDirect("INSERT INTO logins (hash) VALUES ('%s')" % hashed, r) 10. Third-Party Connector (e.g., Slack) Code snippet slack_api = avapConnector("U0xBQ0tfQVBJX1RPS0VO")