@startuml
skinparam linetype ortho
'===============================================================================
'===================================PDM=========================================
'===============================================================================
package PDM <<Cloud>> {
    abstract ProductModuleName {
    +request: GET
    +endpoint: http://api.pdm.vseinstrumenti.ru/api/v1/products/<date>*
    +headers: Accept:application/json
              Authorization:Bearer m1iXCmdwRlbqTU7gBCIe4Xpk8fIjVBGD
    --
    *response: guid товара
    --
    *<date> - 2019-08-16 17:00:00
    }

    abstract CategoryModuleName {
    +request: GET
    +endpoint: http://api.pdm.vseinstrumenti.ru/api/v1/rubrics/<date>*
    +headers: Accept:application/json
              Authorization:Bearer m1iXCmdwRlbqTU7gBCIe4Xpk8fIjVBGD
    --
    *response: guid категории
    --
    *<date> - 2019-08-16 17:00:00
    }

    abstract ManufacturerModuleName {
    +request: GET
    +endpoint: http://api.pdm.vseinstrumenti.ru/api/v1/manufacturers/<date>*
    +headers: Accept:application/json
              Authorization:Bearer m1iXCmdwRlbqTU7gBCIe4Xpk8fIjVBGD
    --
    *response: guid производителя
    --
    *<date> - 2019-08-16 17:00:00
    }

    abstract SpecificationModuleName {
    +request: GET
    +endpoint: http://api.pdm.vseinstrumenti.ru/api/v1/tech_param/<date>*
    +headers: Accept:application/json
              Authorization:Bearer m1iXCmdwRlbqTU7gBCIe4Xpk8fIjVBGD
    --
    *response: guid изменившихся ТХ
    --
    *<date> - 2019-08-16 17:00:00
    }
}

Package MySql <<database>> {
    package "Manufacter_MySql" <<Folder>> {
        entity "search_manufacturers_settings" as manufacturers_settings {
            *id: int auto_increment "PK"
            --
            *manufacturer_guid: char(36)
            *locality_guid: char(36)
            *is_hide: tinyint(1)
            *updated_at: timestamp
            *created_at: timestamp
            --
            unique (manufacturer_guid, locality_guid)
        }

        entity "search_manufacturers" as manufacturers {
            *id: int auto_increment "PK"
            --
            *guid: char(36)
            *name: varchar(256)
            *is_our: tinyint(1)
            *description: varchar(256)
            *updated_at: timestamp
            --
            unique (guid)
        }
    }

    package "Products_MySql" <<Folder>> {
        entity "search_products" as products {
            *id: int auto_increment "PK"
            --
            *is_consumable: tinyint(1)
            *is_on_site: tinyint(1)
            *is_visible: tinyint(1)
            *status: smallint
            *is_discountinued: tinyint(1)
            *is_for_order: tinyint(1)
            *sku: int
            *height: float
            *lenght: float
            *width: float
            *guid: char(36)
            *manufacter_guid: char(36)
            *name_site: varchar(256)
            *category: char(36)
            *name_pdm: varchar(256)
            *name_wtis: varchar(256)
            *name_contractor: varchar(256)
            *keywords: varchar(256)
            *lights: varchar(20)
            *country_code: varchar(3)
            *uri: text
            *advantages: text
            *description: text
            *equipment: text
            *features: text
            *updated_at: timestamp
            --
            unique (guid)
        }

        entity "search_products_categories" as products_categories {
            *id: int auto_increment "PK"
            --
            *hash: char(40)
            *product_guid: char(36)
            *category_guid: char(36)
            *is_enabled: tinyint(1)
            *updated_at: timestamp
            --
            unique (hash)
        }
    }

    package "Categories_MySql" <<Folder>> {
        entity "search_categories_settings" as categories_settings {
            *id: int auto_increment "PK"
            --
            *category_guid: char(36)
            *locality_guid: char(36)
            *is_hide: tinyint(1)
            *updated_at: timestamp
            *created_at: timestamp
            --
            unique (category_guid, locality_guid)
        }

        entity "search_categories_relationship" as categories_relationship {
            *id: int auto_increment "PK"
            --
            *parent: char(36)
            *child: char(36)
            *main: tinyint(1)
            *level: int
            *line: int
            *created_at: timestamp
        }

        entity "search_categories" as categories {
            *id: int auto_increment "PK"
            --
            *guid: char(36)
            name: varchar(256)
            type: varchar(256)
            parent_guid: char(36)
            is_active: tinyint(1)
            is_enable: tinyint(1)
            up_caption: varchar(256)
            updated_at: timestamp
            --
            unique (guid)
        }
    }

    package PDM_Specifications <<Folder>> {
        entity "search_specifications_bool" as specifications_bool {
            *id: int auto_increment "PK"
            --
            *hash: char(40)
            *product_guid: char(36)
            *guid: char(36)
            *name: varchar(256)
            *unit: varchar(256)
            *description: text
            *value: tinyint(1)
            *updated_at: timestamp
            --
            unique (hash)
        }

        entity "search_specifications_collection" as specifications_collection {
            *id: int auto_increment "PK"
            --
            *hash: char(40)
            *product_guid: char(36)
            *guid: char(36)
            *name: varchar(256)
            *unit: varchar(256)
            *description: text
            *value: varchar(256)
            *value_guid: char(36)
            *updated_at: timestamp
            --
            unique (hash)
        }

        entity "search_specifications_float" as specifications_float {
            *id: int auto_increment "PK"
            --
            *hash: char(40)
            *product_guid: char(36)
            *guid: char(36)
            *name: varchar(256)
            *unit: varchar(256)
            *description: text
            *value: float
            *updated_at: timestamp
            --
            unique (hash)
        }

        entity "search_specifications_int" as specifications_int {
            *id: int auto_increment "PK"
            --
            *hash: char(40)
            *product_guid: char(36)
            *guid: char(36)
            *name: varchar(256)
            *unit: varchar(256)
            *description: text
            *value: int
            *updated_at: timestamp
            --
            unique (hash)
        }

        entity "search_specifications_range" as specifications_range {
            *id: int auto_increment "PK"
            --
            *hash: char(40)
            *product_guid: char(36)
            *guid: char(36)
            *name: varchar(256)
            *unit: varchar(256)
            *description: text
            *value_gte: float
            *value_lte: float
            *updated_at: timestamp
            --
            unique (hash)
        }

        entity "search_specifications_text" as specifications_text {
            *id: int auto_increment "PK"
            --
            *hash: char(40)
            *product_guid: char(36)
            *guid: char(36)
            *name: varchar(256)
            *unit: varchar(256)
            *description: text
            *value: varchar(256)
            *updated_at: timestamp
            --
            unique (hash)
        }
    }
}

    SpecificationModuleName -up----> PDM_Specifications
    ProductModuleName -up---> "Products_MySql"
    CategoryModuleName -up----> "Categories_MySql"
    ManufacturerModuleName -up---> "Manufacter_MySql"

@enduml