# contract_party

## Description

<details>
<summary><strong>Table Definition</strong></summary>

```sql
CREATE TABLE `contract_party` (
  `contract_party_id` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `contract_id` mediumint unsigned NOT NULL,
  `target_type` enum('contributor','label') COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'contributor',
  `target_id` varchar(180) COLLATE utf8mb4_general_ci NOT NULL,
  `created_at` datetime NOT NULL,
  `created_by` varchar(180) COLLATE utf8mb4_general_ci NOT NULL,
  `last_modified` datetime NOT NULL,
  `last_modified_by` varchar(180) COLLATE utf8mb4_general_ci NOT NULL,
  `deleted_at` datetime DEFAULT NULL,
  `deleted_by` varchar(180) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`contract_party_id`),
  KEY `fk_contract_party_contract` (`contract_id`),
  CONSTRAINT `fk_contract_party_contract` FOREIGN KEY (`contract_id`) REFERENCES `contract` (`contract_id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=[Redacted by tbls] DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
```

</details>

## Columns

| Name              | Type                        | Default     | Nullable | Extra Definition | Children                                            | Parents                 | Comment |
| ----------------- | --------------------------- | ----------- | -------- | ---------------- | --------------------------------------------------- | ----------------------- | ------- |
| contract_id       | mediumint unsigned          |             | false    |                  |                                                     | [contract](contract.md) |         |
| contract_party_id | mediumint unsigned          |             | false    | auto_increment   | [contract_party_history](contract_party_history.md) |                         |         |
| created_at        | datetime                    |             | false    |                  |                                                     |                         |         |
| created_by        | varchar(180)                |             | false    |                  |                                                     |                         |         |
| deleted_at        | datetime                    |             | true     |                  |                                                     |                         |         |
| deleted_by        | varchar(180)                |             | true     |                  |                                                     |                         |         |
| last_modified     | datetime                    |             | false    |                  |                                                     |                         |         |
| last_modified_by  | varchar(180)                |             | false    |                  |                                                     |                         |         |
| target_id         | varchar(180)                |             | false    |                  |                                                     |                         |         |
| target_type       | enum('contributor','label') | contributor | false    |                  |                                                     |                         |         |

## Constraints

| Name                       | Type        | Definition                                                  |
| -------------------------- | ----------- | ----------------------------------------------------------- |
| PRIMARY                    | PRIMARY KEY | PRIMARY KEY (contract_party_id)                             |
| fk_contract_party_contract | FOREIGN KEY | FOREIGN KEY (contract_id) REFERENCES contract (contract_id) |

## Indexes

| Name                       | Definition                                               |
| -------------------------- | -------------------------------------------------------- |
| PRIMARY                    | PRIMARY KEY (contract_party_id) USING BTREE              |
| fk_contract_party_contract | KEY fk_contract_party_contract (contract_id) USING BTREE |

## Triggers

| Name                        | Definition                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| after_insert_contract_party | CREATE TRIGGER after_insert_contract_party AFTER INSERT ON contract_party<br />FOR EACH ROW<br />BEGIN<br />    IF (NEW.target_type = 'contributor') THEN<br />        IF NOT EXISTS (<br />            SELECT s.schedule_id FROM `schedule` AS s<br />            INNER JOIN `schedule_attachment` AS sa ON s.schedule_id = sa.schedule_id<br />            WHERE s.target_id = NEW.target_id AND s.target_type = 'contributor' AND<br />            sa.target_id = NEW.target_id AND sa.target_type = 'contributor'<br />        ) THEN<br />            INSERT INTO `schedule` (<br />                `schedule_name`,<br />                `target_type`,<br />                `target_id`,<br />                `created_by`,<br />                `created_at`,<br />                `last_modified_by`,<br />                `last_modified`<br />            )<br />            VALUES (<br />                'Contributor Only Schedule',<br />                'contributor',<br />                NEW.target_id,<br />                NEW.created_by,<br />                NEW.created_at,<br />                NEW.last_modified_by,<br />                NEW.last_modified<br />            );<br />            SET @schedule_id = LAST_INSERT_ID();<br /><br />            INSERT INTO `schedule_attachment` (<br />                `schedule_id`,<br />                `target_type`,<br />                `target_id`,<br />                `created_by`,<br />                `created_at`,<br />                `last_modified_by`,<br />                `last_modified`<br />            )<br />            VALUES (<br />                @schedule_id,<br />                'contributor',<br />                NEW.target_id,<br />                NEW.created_by,<br />                NEW.created_at,<br />                NEW.last_modified_by,<br />                NEW.last_modified<br />            );<br />        END IF;<br />    END IF;<br />END |
| after_update_contract_party | CREATE TRIGGER after_update_contract_party AFTER UPDATE ON contract_party<br />FOR EACH ROW<br />BEGIN<br />    INSERT INTO `contract_party_history` (<br />        `contract_party_id`,<br />        `contract_id`,<br />        `target_type`,<br />        `target_id`,<br />        `created_at`,<br />        `created_by`,<br />        `last_modified`,<br />        `last_modified_by`,<br />        `deleted_by`,<br />        `deleted_at`<br />    ) VALUES (<br />        old.contract_party_id,<br />        old.contract_id,<br />        old.target_type,<br />        old.target_id,<br />        old.created_at,<br />        old.created_by,<br />        old.last_modified,<br />        old.last_modified_by,<br />        old.deleted_by,<br />        old.deleted_at<br />    );<br />END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

## Relations

![er](contract_party.svg)

---

> Generated by [tbls](https://github.com/k1LoW/tbls)
