-- +migrate Up
CREATE TABLE `kind_boxes` (
                            `id`                    INT PRIMARY KEY AUTO_INCREMENT,
                            `kind_box_req_id`       INT NOT NULL,
                            `benefactor_id`         INT NOT NULL,
                            `type`                  ENUM('on-table','cylindrical','stand-up') NOT NULL,
                            `amount`                INT UNSIGNED,
                            `serial_number`         VARCHAR(191) UNIQUE,
                            `status`                ENUM('delivered','ready-to-return','assigned-receiver-agent','returned','enumerated') NOT NULL,
                            `deliver_refer_time_id` INT NOT NULL,
                            `deliver_refer_date`    DATETIME NOT NULL,
                            `deliver_address_id`    INT NOT NULL,
                            `sender_agent_id`       INT NOT NULL,
                            `delivered_at`          DATETIME NOT NULL,
                            `return_refer_time_id`  INT,
                            `return_refer_date`     DATETIME,
                            `return_address_id`     INT,
                            `receiver_agent_id`     INT,
                            `returned_at`           DATETIME,

                            `created_at`            TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
                            `updated_at`            TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
                            `deleted_at`            TIMESTAMP NULL,
                            FOREIGN KEY (`kind_box_req_id`)         REFERENCES `kind_box_reqs` (`id`),
                            FOREIGN KEY (`benefactor_id`)           REFERENCES `benefactors` (`id`),
                            FOREIGN KEY (`deliver_refer_time_id`)   REFERENCES `refer_times` (`id`),
                            FOREIGN KEY (`deliver_address_id`)      REFERENCES `addresses` (`id`),
                            FOREIGN KEY (`sender_agent_id`)         REFERENCES `admins` (`id`),
                            FOREIGN KEY (`return_refer_time_id`)    REFERENCES `refer_times` (`id`),
                            FOREIGN KEY (`return_address_id`)       REFERENCES `addresses` (`id`),
                            FOREIGN KEY (`receiver_agent_id`)       REFERENCES `admins` (`id`),
                            INDEX `index_serial_number` (`serial_number`)
);

-- +migrate Down
DROP TABLE `kind_boxes`;