---
# System prepended metadata

title: Table Relationships and Actions

---

# Table Relationships and Actions

### Misc
* Certain users can approve their own changes

### Cases
* New tables needed
    * None
* Primary table
    * VoIP_Test
* Operations
    * CUD
* Link to Lower Level
    * test_steps_id -> Instruction Set ID 
    * Table: Instruction_Sets


### Instruction Sets
* New table needed: Yes?
* Operations
    * CUD
    * Clone - 
        * Metadata
        * New test_steps_id required
        * all other fields can be copied
        * all the rows in PPICL_Test_Steps copied with the new test_steps_id
* Link to Lower Level
    * test_steps_id -> test_steps_id
    * Table: PPICL_Test_Steps


### PPICL Test Steps
* a test step is an instance of parent_command in an instruction set
* a test step cannot exist without the parent_command existing
* Actions
    * Add a Test Step 
        * Select 1..n Existing from ParentCommands table
            * Table of ParentCommands
        * Select 1..n Existing from other InstructionSets-PPICL_TestSteps
    * Edit a Test Step
        * * Select 1..n Existing from ParentCommands table
            * Table of ParentCommands
        * Select 1..n Existing from other InstructionSets-PPICL_TestSteps
    * Edit step meta data
        * Resource - default A
        * Inputs - default from parent comand
        * Output - default value
        * Step Action - default test
        * Target (? maybe - might be 1-1 for a parent_command)
    * Edit Input Arguments values for a test step
    * Delete a test step
    * Reorder test steps
    
* table - exists
* Links to Lower Level
    1. test_step.parent_command
    * parent_command -> parent_command
    * Table: Parent_Commands


### Parent Commands
* meta table - remake ( Drop & Rebuild)
    * table with all parent commands
* Clone - 
    * new parent_command name
        * new row in parent commands table
    * copies commands, responses, and validations to parent command name
        * new rows in commands, responses, validations tables with new parent command name
* Create
    * insert a row into parent commands table
* Edit Metadata
    * edit row in parent commands table
* Delete
    * delete row in parent commands table
    * cascades to commands, responses, validations for that parent command


* Views:
    * Parent Commands Tables
        * View all parent commands - table of metadata
        

* Link to Lower Level
    * parent_command -> parent_command
    * Table: Parent_Commands


### Parent Command Steps
* tables
    * PPICL_Commands
    * PPICL_Platform
    * PPICL_Protocol
    * PPICL_Portal
    * PPICL_Responses
    * PPICL_Validations
* Actions
    * Add a new Command from something in the reference table
        * PPICL_Commands
        * PPICL_Platform - maybe
        * PPICL_Protocol
        * PPICL_Portal - just need for selenium ops from reference
    * Add a new Command from scratch for some types
        * PPICL_Commands
    * Edit a Command
        * PPICL_Commands
        * PPICL_Platform
        * PPICL_Protocol
        * PPICL_Portal
    * Delete a Command
        * delete from the associated table with that parent_command:
            * PPICL_Commands
            * PPICL_Platform
            * PPICL_Protocol
            * PPICL_Portal
        * cascades to responses, validations for that parent_command->command
    * Reorder Commands in parent_command
        * for each command type, needs to be 1...5 columns need to be filtered down to 1 
* Delete
    * delete commands, responses, validations of parent command

 * Parent Command Detail View
        * View detail (commands-responses-validations) for a parent_command

### Reference Table
* goal - single table
* new table
* columns
    * command type
    * platform
    * network
    * command
    * input meta
    * name
    * description




## Roles
* CUD Entities
* Approve Entities