MysqlTableScriptExpander

Expands:

$applicationRoot.directory$/provision_db.sql

if:

applicationInstance.businessLogicSettings.targetDatabase.name.equals('MYSQL')
property value
element type ApplicationInstance
qualified name net.democritus.expander.sql.MysqlTableScriptExpander
layer ROOT
technology COMMON
sourceType RESOURCE
phase expansion
features  

Example

Some example of the content generated by the expander:

-- Provisioning script for restexample_mysql
-- Database: MYSQL
-- expanded with nsx-expanders:4.4.4, expansionResource net.democritus:sql-expanders:1.3.1

-- ------------------ --
-- Cleanup            --
-- ------------------ --

-- anchor:cleanup:start
DROP DATABASE IF EXISTS `UTILS`;
DROP DATABASE IF EXISTS `VALIDATION`;
DROP DATABASE IF EXISTS `ACCOUNT`;
DROP DATABASE IF EXISTS `WORKFLOW`;
DROP DATABASE IF EXISTS `ASSETS`;
DROP DATABASE IF EXISTS `CITIES`;
DROP DATABASE IF EXISTS `ANIMALS`;
DROP DATABASE IF EXISTS `RESTDEMO`;
-- anchor:cleanup:end

-- ------------------ --
-- Create Databases   --
-- ------------------ --

-- anchor:databases:start
CREATE DATABASE `UTILS`;
CREATE DATABASE `VALIDATION`;
CREATE DATABASE `ACCOUNT`;
CREATE DATABASE `WORKFLOW`;
CREATE DATABASE `ASSETS`;
CREATE DATABASE `CITIES`;
CREATE DATABASE `ANIMALS`;
CREATE DATABASE `RESTDEMO`;
-- anchor:databases:end

-- ------------------ --
-- Create Tables      --
-- ------------------ --

-- anchor:tables:start
-- > Execution
CREATE TABLE `UTILS`.`Execution` (
    `id` BIGINT NOT NULL,
    `component` VARCHAR(255),
    `element` VARCHAR(255),
    `name` VARCHAR(255),
    `packageName` VARCHAR(255),
    -- @anchor:utils-execution-table:start
    -- @anchor:utils-execution-table:end
    -- anchor:custom-utils-execution-table:start
    -- anchor:custom-utils-execution-table:end
    PRIMARY KEY (`id`)
);
-- < Execution

-- > IdCounter
CREATE TABLE `UTILS`.`IdCounter` (
    `id` BIGINT NOT NULL,
    `counter` BIGINT,
    `name` VARCHAR(255),
    -- @anchor:utils-idCounter-table:start
    -- @anchor:utils-idCounter-table:end
    -- anchor:custom-utils-idCounter-table:start
    -- anchor:custom-utils-idCounter-table:end
    PRIMARY KEY (`id`)
);
-- < IdCounter

-- > ParamTargetValue
CREATE TABLE `UTILS`.`ParamTargetValue` (
    `id` BIGINT NOT NULL,
    `param` VARCHAR(255),
    `target` VARCHAR(255),
    `value` VARCHAR(255),
    -- @anchor:utils-paramTargetValue-table:start
    -- @anchor:utils-paramTargetValue-table:end
    -- anchor:custom-utils-paramTargetValue-table:start
    -- anchor:custom-utils-paramTargetValue-table:end
    PRIMARY KEY (`id`)
);
-- < ParamTargetValue

-- > TagValuePair
CREATE TABLE `UTILS`.`TagValuePair` (
    `id` BIGINT NOT NULL,
    `tag` VARCHAR(255),
    `value` VARCHAR(255),
    -- @anchor:utils-tagValuePair-table:start
    -- @anchor:utils-tagValuePair-table:end
    -- anchor:custom-utils-tagValuePair-table:start
    -- anchor:custom-utils-tagValuePair-table:end
    PRIMARY KEY (`id`)
);
-- < TagValuePair

-- > Thumbnail
CREATE TABLE `UTILS`.`Thumbnail` (
    `id` BIGINT NOT NULL,
    `border` INTEGER,
    `clickAction` VARCHAR(255),
    `depth` INTEGER,
    `fullName` VARCHAR(255),
    `height` INTEGER,
    `hooverAction` VARCHAR(255),
    `leftX` INTEGER,
    `name` VARCHAR(255),
    `targetId` BIGINT,
    `targetName` VARCHAR(255),
    `targetType` VARCHAR(255),
    `thumbName` VARCHAR(255),
    `thumbType` VARCHAR(255),
    `topY` INTEGER,
    `uri` VARCHAR(255),
    `width` INTEGER,
    -- @anchor:utils-thumbnail-table:start
    -- @anchor:utils-thumbnail-table:end
    -- anchor:custom-utils-thumbnail-table:start
    -- anchor:custom-utils-thumbnail-table:end
    PRIMARY KEY (`id`)
);
-- < Thumbnail

-- > Validation
CREATE TABLE `VALIDATION`.`Validation` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    -- @anchor:validation-validation-table:start
    -- @anchor:validation-validation-table:end
    -- anchor:custom-validation-validation-table:start
    -- anchor:custom-validation-validation-table:end
    PRIMARY KEY (`id`)
);
-- < Validation

-- > Account
CREATE TABLE `ACCOUNT`.`Account` (
    `id` BIGINT NOT NULL,
    `address` VARCHAR(255),
    `city` VARCHAR(255),
    `country` VARCHAR(255),
    `email` VARCHAR(255),
    `fullName` VARCHAR(255),
    `name` VARCHAR(255),
    `phone` VARCHAR(255),
    `refId` VARCHAR(255),
    `status` VARCHAR(255),
    `style` VARCHAR(255),
    `zipCode` VARCHAR(255),
    -- @anchor:account-account-table:start
    -- @anchor:account-account-table:end
    -- anchor:custom-account-account-table:start
    -- anchor:custom-account-account-table:end
    PRIMARY KEY (`id`)
);
-- < Account

-- > Component
CREATE TABLE `ACCOUNT`.`Component` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    -- @anchor:account-component-table:start
    -- @anchor:account-component-table:end
    -- anchor:custom-account-component-table:start
    -- anchor:custom-account-component-table:end
    PRIMARY KEY (`id`)
);
-- < Component

-- > DataAccess
CREATE TABLE `ACCOUNT`.`DataAccess` (
    `id` BIGINT NOT NULL,
    `authorized` VARCHAR(255),
    `disabled` VARCHAR(255),
    `element` VARCHAR(255),
    `enteredAt` DATETIME,
    `forProfile_id` BIGINT,
    `forUser_id` BIGINT,
    `forUserGroup_id` BIGINT,
    `functionality` VARCHAR(255),
    `lastModifiedAt` DATETIME,
    `name` VARCHAR(255),
    `target` VARCHAR(255),
    -- @anchor:account-dataAccess-table:start
    -- @anchor:account-dataAccess-table:end
    -- anchor:custom-account-dataAccess-table:start
    -- anchor:custom-account-dataAccess-table:end
    PRIMARY KEY (`id`)
);
-- < DataAccess

-- > HelpInfo
CREATE TABLE `ACCOUNT`.`HelpInfo` (
    `id` BIGINT NOT NULL,
    `description` VARCHAR(255),
    `name` VARCHAR(255),
    -- @anchor:account-helpInfo-table:start
    -- @anchor:account-helpInfo-table:end
    -- anchor:custom-account-helpInfo-table:start
    -- anchor:custom-account-helpInfo-table:end
    PRIMARY KEY (`id`)
);
-- < HelpInfo

-- > Menu
CREATE TABLE `ACCOUNT`.`Menu` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    `portal_id` BIGINT,
    `profile_id` BIGINT,
    -- @anchor:account-menu-table:start
    -- @anchor:account-menu-table:end
    -- anchor:custom-account-menu-table:start
    -- anchor:custom-account-menu-table:end
    PRIMARY KEY (`id`)
);
-- < Menu

-- > MenuItem
CREATE TABLE `ACCOUNT`.`MenuItem` (
    `id` BIGINT NOT NULL,
    `menu_id` BIGINT,
    `menuItem_id` BIGINT,
    `name` VARCHAR(255),
    `screen_id` BIGINT,
    `sortOrder` INTEGER,
    -- @anchor:account-menuItem-table:start
    -- @anchor:account-menuItem-table:end
    -- anchor:custom-account-menuItem-table:start
    -- anchor:custom-account-menuItem-table:end
    PRIMARY KEY (`id`)
);
-- < MenuItem

-- > Portal
CREATE TABLE `ACCOUNT`.`Portal` (
    `id` BIGINT NOT NULL,
    `description` VARCHAR(255),
    `name` VARCHAR(255),
    `version` VARCHAR(255),
    -- @anchor:account-portal-table:start
    -- @anchor:account-portal-table:end
    -- anchor:custom-account-portal-table:start
    -- anchor:custom-account-portal-table:end
    PRIMARY KEY (`id`)
);
-- < Portal

-- > Profile
CREATE TABLE `ACCOUNT`.`Profile` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    `userGroup_id` BIGINT,
    `weight` INTEGER,
    -- @anchor:account-profile-table:start
    -- @anchor:account-profile-table:end
    -- anchor:custom-account-profile-table:start
    -- anchor:custom-account-profile-table:end
    PRIMARY KEY (`id`)
);
-- < Profile

-- > Screen
CREATE TABLE `ACCOUNT`.`Screen` (
    `id` BIGINT NOT NULL,
    `component_id` BIGINT,
    `link` VARCHAR(255),
    `name` VARCHAR(255),
    `sortOrder` INTEGER,
    -- @anchor:account-screen-table:start
    -- @anchor:account-screen-table:end
    -- anchor:custom-account-screen-table:start
    -- anchor:custom-account-screen-table:end
    PRIMARY KEY (`id`)
);
-- < Screen

-- > ScreenProfile
CREATE TABLE `ACCOUNT`.`ScreenProfile` (
    `id` BIGINT NOT NULL,
    `profile_id` BIGINT,
    `screen_id` BIGINT,
    -- @anchor:account-screenProfile-table:start
    -- @anchor:account-screenProfile-table:end
    -- anchor:custom-account-screenProfile-table:start
    -- anchor:custom-account-screenProfile-table:end
    PRIMARY KEY (`id`)
);
-- < ScreenProfile

-- > User
CREATE TABLE `ACCOUNT`.`User` (
    `id` BIGINT NOT NULL,
    `account_id` BIGINT,
    `disabled` VARCHAR(255),
    `email` VARCHAR(255),
    `encryptedPassword` VARCHAR(255),
    `enteredAt` DATETIME,
    `firstName` VARCHAR(255),
    `fullName` VARCHAR(255),
    `language` VARCHAR(255),
    `lastModifiedAt` DATETIME,
    `lastName` VARCHAR(255),
    `mobile` VARCHAR(255),
    `name` VARCHAR(255),
    `password` VARCHAR(255),
    `persNr` VARCHAR(255),
    `profile_id` BIGINT,
    `timeout` INTEGER,
    -- @anchor:account-user-table:start
    -- @anchor:account-user-table:end
    -- anchor:custom-account-user-table:start
    -- anchor:custom-account-user-table:end
    PRIMARY KEY (`id`)
);
-- < User

-- > UserGroup
CREATE TABLE `ACCOUNT`.`UserGroup` (
    `id` BIGINT NOT NULL,
    `disabled` VARCHAR(255),
    `enteredAt` DATETIME,
    `lastModifiedAt` DATETIME,
    `name` VARCHAR(255),
    `type` VARCHAR(255),
    -- @anchor:account-userGroup-table:start
    -- @anchor:account-userGroup-table:end
    -- anchor:custom-account-userGroup-table:start
    -- anchor:custom-account-userGroup-table:end
    PRIMARY KEY (`id`)
);
-- < UserGroup

-- > EngineNode
CREATE TABLE `WORKFLOW`.`EngineNode` (
    `id` BIGINT NOT NULL,
    `activeSince` DATETIME,
    `hostname` VARCHAR(255),
    `lastActive` DATETIME,
    `master` BOOLEAN,
    `name` VARCHAR(255),
    `status` VARCHAR(255),
    -- @anchor:workflow-engineNode-table:start
    -- @anchor:workflow-engineNode-table:end
    -- anchor:custom-workflow-engineNode-table:start
    -- anchor:custom-workflow-engineNode-table:end
    PRIMARY KEY (`id`)
);
-- < EngineNode

-- > EngineNodeService
CREATE TABLE `WORKFLOW`.`EngineNodeService` (
    `id` BIGINT NOT NULL,
    `engineNode_id` BIGINT,
    `engineService_id` BIGINT,
    `lastRunAt` DATETIME,
    `name` VARCHAR(255),
    `nextRun` DATETIME,
    `status` VARCHAR(255),
    -- @anchor:workflow-engineNodeService-table:start
    -- @anchor:workflow-engineNodeService-table:end
    -- anchor:custom-workflow-engineNodeService-table:start
    -- anchor:custom-workflow-engineNodeService-table:end
    PRIMARY KEY (`id`)
);
-- < EngineNodeService

-- > EngineService
CREATE TABLE `WORKFLOW`.`EngineService` (
    `id` BIGINT NOT NULL,
    `batchSize` INTEGER,
    `busy` VARCHAR(255),
    `changed` VARCHAR(255),
    `collector` BIGINT,
    `lastRunAt` DATETIME,
    `maximumNumberOfNodes` INTEGER,
    `name` VARCHAR(255),
    `status` VARCHAR(255),
    `timeWindowGroup_id` BIGINT,
    `waitTime` INTEGER,
    `workflow_id` BIGINT,
    -- @anchor:workflow-engineService-table:start
    -- @anchor:workflow-engineService-table:end
    -- anchor:custom-workflow-engineService-table:start
    -- anchor:custom-workflow-engineService-table:end
    PRIMARY KEY (`id`)
);
-- < EngineService

-- > StateTask
CREATE TABLE `WORKFLOW`.`StateTask` (
    `id` BIGINT NOT NULL,
    `beginState` VARCHAR(255),
    `endState` VARCHAR(255),
    `failedState` VARCHAR(255),
    `implementation` VARCHAR(255),
    `interimState` VARCHAR(255),
    `maxConcurrentTasks` INTEGER,
    `name` VARCHAR(255),
    `params` VARCHAR(255),
    `processor` VARCHAR(255),
    `timeout` BIGINT,
    `workflow_id` BIGINT,
    -- @anchor:workflow-stateTask-table:start
    -- @anchor:workflow-stateTask-table:end
    -- anchor:custom-workflow-stateTask-table:start
    -- anchor:custom-workflow-stateTask-table:end
    PRIMARY KEY (`id`)
);
-- < StateTask

-- > StateTimer
CREATE TABLE `WORKFLOW`.`StateTimer` (
    `id` BIGINT NOT NULL,
    `allowedPeriod` BIGINT,
    `alteredState` VARCHAR(255),
    `beginState` VARCHAR(255),
    `implementation` VARCHAR(255),
    `name` VARCHAR(255),
    `params` VARCHAR(255),
    `processor` VARCHAR(255),
    `requiredAction` VARCHAR(255),
    `targetState` VARCHAR(255),
    `workflow_id` BIGINT,
    -- @anchor:workflow-stateTimer-table:start
    -- @anchor:workflow-stateTimer-table:end
    -- anchor:custom-workflow-stateTimer-table:start
    -- anchor:custom-workflow-stateTimer-table:end
    PRIMARY KEY (`id`)
);
-- < StateTimer

-- > TimeTask
CREATE TABLE `WORKFLOW`.`TimeTask` (
    `id` BIGINT NOT NULL,
    `implementation` VARCHAR(255),
    `intervalPeriod` BIGINT,
    `name` VARCHAR(255),
    `params` VARCHAR(255),
    `processor` VARCHAR(255),
    `requiredAction` VARCHAR(255),
    `triggerState` VARCHAR(255),
    `workflow_id` BIGINT,
    -- @anchor:workflow-timeTask-table:start
    -- @anchor:workflow-timeTask-table:end
    -- anchor:custom-workflow-timeTask-table:start
    -- anchor:custom-workflow-timeTask-table:end
    PRIMARY KEY (`id`)
);
-- < TimeTask

-- > TimeWindow
CREATE TABLE `WORKFLOW`.`TimeWindow` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    `startTime` VARCHAR(255),
    `stopTime` VARCHAR(255),
    -- @anchor:workflow-timeWindow-table:start
    -- @anchor:workflow-timeWindow-table:end
    -- anchor:custom-workflow-timeWindow-table:start
    -- anchor:custom-workflow-timeWindow-table:end
    PRIMARY KEY (`id`)
);
-- < TimeWindow

-- > TimeWindowGroup
CREATE TABLE `WORKFLOW`.`TimeWindowGroup` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    `visible` VARCHAR(255),
    -- @anchor:workflow-timeWindowGroup-table:start
    -- @anchor:workflow-timeWindowGroup-table:end
    -- anchor:custom-workflow-timeWindowGroup-table:start
    -- anchor:custom-workflow-timeWindowGroup-table:end
    PRIMARY KEY (`id`)
);
-- < TimeWindowGroup

-- > Workflow
CREATE TABLE `WORKFLOW`.`Workflow` (
    `id` BIGINT NOT NULL,
    `className` VARCHAR(255),
    `componentName` VARCHAR(255),
    `name` VARCHAR(255),
    `responsible_id` BIGINT,
    `sequencingStrategy` VARCHAR(255),
    `target` VARCHAR(255),
    -- @anchor:workflow-workflow-table:start
    -- @anchor:workflow-workflow-table:end
    -- anchor:custom-workflow-workflow-table:start
    -- anchor:custom-workflow-workflow-table:end
    PRIMARY KEY (`id`)
);
-- < Workflow

-- > Asset
CREATE TABLE `ASSETS`.`Asset` (
    `id` BIGINT NOT NULL,
    `byteSize` BIGINT,
    `complete` BOOLEAN,
    `contentType` VARCHAR(255),
    `externalAsset_id` BIGINT,
    `fileAsset_id` BIGINT,
    `fileId` VARCHAR(255),
    `internalAsset_id` BIGINT,
    `name` VARCHAR(255),
    `type` VARCHAR(255),
    -- @anchor:assets-asset-table:start
    -- @anchor:assets-asset-table:end
    -- anchor:custom-assets-asset-table:start
    -- anchor:custom-assets-asset-table:end
    PRIMARY KEY (`id`)
);
-- < Asset

-- > ExternalAsset
CREATE TABLE `ASSETS`.`ExternalAsset` (
    `id` BIGINT NOT NULL,
    `byteSize` BIGINT,
    `contentType` VARCHAR(255),
    `name` VARCHAR(255),
    `uri` VARCHAR(255),
    -- @anchor:assets-externalAsset-table:start
    -- @anchor:assets-externalAsset-table:end
    -- anchor:custom-assets-externalAsset-table:start
    -- anchor:custom-assets-externalAsset-table:end
    PRIMARY KEY (`id`)
);
-- < ExternalAsset

-- > FileAsset
CREATE TABLE `ASSETS`.`FileAsset` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    `uploadUri` VARCHAR(255),
    -- @anchor:assets-fileAsset-table:start
    -- @anchor:assets-fileAsset-table:end
    -- anchor:custom-assets-fileAsset-table:start
    -- anchor:custom-assets-fileAsset-table:end
    PRIMARY KEY (`id`)
);
-- < FileAsset

-- > InternalAsset
CREATE TABLE `ASSETS`.`InternalAsset` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    -- @anchor:assets-internalAsset-table:start
    -- @anchor:assets-internalAsset-table:end
    -- anchor:custom-assets-internalAsset-table:start
    -- anchor:custom-assets-internalAsset-table:end
    PRIMARY KEY (`id`)
);
-- < InternalAsset

-- > InternalAssetChunk
CREATE TABLE `ASSETS`.`InternalAssetChunk` (
    `id` BIGINT NOT NULL,
    `byteSize` INTEGER,
    `content` BLOB,
    `internalAsset_id` BIGINT,
    `isLast` BOOLEAN,
    `name` VARCHAR(255),
    `position` INTEGER,
    -- @anchor:assets-internalAssetChunk-table:start
    -- @anchor:assets-internalAssetChunk-table:end
    -- anchor:custom-assets-internalAssetChunk-table:start
    -- anchor:custom-assets-internalAssetChunk-table:end
    PRIMARY KEY (`id`)
);
-- < InternalAssetChunk

-- > RemoteAsset
CREATE TABLE `ASSETS`.`RemoteAsset` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    `url` VARCHAR(255),
    -- @anchor:assets-remoteAsset-table:start
    -- @anchor:assets-remoteAsset-table:end
    -- anchor:custom-assets-remoteAsset-table:start
    -- anchor:custom-assets-remoteAsset-table:end
    PRIMARY KEY (`id`)
);
-- < RemoteAsset

-- > City
CREATE TABLE `CITIES`.`City` (
    `id` BIGINT NOT NULL,
    `country_id` BIGINT,
    `enteredAt` DATETIME,
    `lastModifiedAt` DATETIME,
    `name` VARCHAR(255),
    `postalCode` INTEGER,
    `uuid` VARCHAR(255),
    -- @anchor:cities-city-table:start
    -- @anchor:cities-city-table:end
    -- anchor:custom-cities-city-table:start
    -- anchor:custom-cities-city-table:end
    PRIMARY KEY (`id`)
);
-- < City

-- > Country
CREATE TABLE `CITIES`.`Country` (
    `id` BIGINT NOT NULL,
    `code` VARCHAR(255),
    `name` VARCHAR(255),
    -- @anchor:cities-country-table:start
    -- @anchor:cities-country-table:end
    -- anchor:custom-cities-country-table:start
    -- anchor:custom-cities-country-table:end
    PRIMARY KEY (`id`)
);
-- < Country

-- > Street
CREATE TABLE `CITIES`.`Street` (
    `id` BIGINT NOT NULL,
    `city_id` BIGINT,
    `enteredAt` DATETIME,
    `lastModifiedAt` DATETIME,
    `name` VARCHAR(255),
    `uuid` VARCHAR(255),
    -- @anchor:cities-street-table:start
    -- @anchor:cities-street-table:end
    -- anchor:custom-cities-street-table:start
    -- anchor:custom-cities-street-table:end
    PRIMARY KEY (`id`)
);
-- < Street

-- > Cat
CREATE TABLE `ANIMALS`.`Cat` (
    `id` BIGINT NOT NULL,
    `breed_id` BIGINT,
    `name` VARCHAR(255),
    `owner_id` BIGINT,
    `uuid` VARCHAR(255),
    -- @anchor:animals-cat-table:start
    -- @anchor:animals-cat-table:end
    -- anchor:custom-animals-cat-table:start
    -- anchor:custom-animals-cat-table:end
    PRIMARY KEY (`id`)
);
-- < Cat

-- > CatBreed
CREATE TABLE `ANIMALS`.`CatBreed` (
    `id` BIGINT NOT NULL,
    `coatLength` VARCHAR(255),
    `country` VARCHAR(255),
    `name` VARCHAR(255),
    `origin` VARCHAR(255),
    -- @anchor:animals-catBreed-table:start
    -- @anchor:animals-catBreed-table:end
    -- anchor:custom-animals-catBreed-table:start
    -- anchor:custom-animals-catBreed-table:end
    PRIMARY KEY (`id`)
);
-- < CatBreed

-- > Owner
CREATE TABLE `ANIMALS`.`Owner` (
    `id` BIGINT NOT NULL,
    `country_id` BIGINT,
    `name` VARCHAR(255),
    `uuid` VARCHAR(255),
    -- @anchor:animals-owner-table:start
    -- @anchor:animals-owner-table:end
    -- anchor:custom-animals-owner-table:start
    -- anchor:custom-animals-owner-table:end
    PRIMARY KEY (`id`)
);
-- < Owner

-- > Dummy
CREATE TABLE `RESTDEMO`.`Dummy` (
    `id` BIGINT NOT NULL,
    `name` VARCHAR(255),
    -- @anchor:restDemo-dummy-table:start
    -- @anchor:restDemo-dummy-table:end
    -- anchor:custom-restDemo-dummy-table:start
    -- anchor:custom-restDemo-dummy-table:end
    PRIMARY KEY (`id`)
);
-- < Dummy
-- anchor:tables:end

-- ------------------ --
-- Create Join Tables --
-- ------------------ --

-- anchor:join-tables:start
-- > Execution
-- < Execution

-- > IdCounter
-- < IdCounter

-- > ParamTargetValue
-- < ParamTargetValue

-- > TagValuePair
-- < TagValuePair

-- > Thumbnail
-- < Thumbnail

-- > Validation
-- < Validation

-- > Account
-- < Account

-- > Component
-- < Component

-- > DataAccess
CREATE TABLE `ACCOUNT`.`dataAccess_userGroups` (
    `dataAccess_id` BIGINT,
    `userGroup_id` BIGINT
    -- @anchor:account-dataAccess-userGroups-jointable:start
    -- @anchor:account-dataAccess-userGroups-jointable:end
    -- anchor:custom-account-dataAccess-userGroups-jointable:start
    -- anchor:custom-account-dataAccess-userGroups-jointable:end
);

ALTER TABLE `ACCOUNT`.`dataAccess_userGroups`
ADD FOREIGN KEY (`dataAccess_id`)
REFERENCES `ACCOUNT`.`DataAccess` (`id`);

ALTER TABLE `ACCOUNT`.`dataAccess_userGroups`
ADD FOREIGN KEY (`userGroup_id`)
REFERENCES `ACCOUNT`.`UserGroup` (`id`);
-- < DataAccess

-- > HelpInfo
-- < HelpInfo

-- > Menu
-- < Menu

-- > MenuItem
-- < MenuItem

-- > Portal
-- < Portal

-- > Profile
CREATE TABLE `ACCOUNT`.`profile_screens` (
    `profile_id` BIGINT,
    `screen_id` BIGINT
    -- @anchor:account-profile-screens-jointable:start
    -- @anchor:account-profile-screens-jointable:end
    -- anchor:custom-account-profile-screens-jointable:start
    -- anchor:custom-account-profile-screens-jointable:end
);

ALTER TABLE `ACCOUNT`.`profile_screens`
ADD FOREIGN KEY (`profile_id`)
REFERENCES `ACCOUNT`.`Profile` (`id`);

ALTER TABLE `ACCOUNT`.`profile_screens`
ADD FOREIGN KEY (`screen_id`)
REFERENCES `ACCOUNT`.`Screen` (`id`);
-- < Profile

-- > Screen
-- < Screen

-- > ScreenProfile
CREATE TABLE `ACCOUNT`.`screenProfile_screens` (
    `screenProfile_id` BIGINT,
    `screen_id` BIGINT
    -- @anchor:account-screenProfile-screens-jointable:start
    -- @anchor:account-screenProfile-screens-jointable:end
    -- anchor:custom-account-screenProfile-screens-jointable:start
    -- anchor:custom-account-screenProfile-screens-jointable:end
);

ALTER TABLE `ACCOUNT`.`screenProfile_screens`
ADD FOREIGN KEY (`screenProfile_id`)
REFERENCES `ACCOUNT`.`ScreenProfile` (`id`);

ALTER TABLE `ACCOUNT`.`screenProfile_screens`
ADD FOREIGN KEY (`screen_id`)
REFERENCES `ACCOUNT`.`Screen` (`id`);
-- < ScreenProfile

-- > User
CREATE TABLE `ACCOUNT`.`user_userGroups` (
    `user_id` BIGINT,
    `userGroup_id` BIGINT
    -- @anchor:account-user-userGroups-jointable:start
    -- @anchor:account-user-userGroups-jointable:end
    -- anchor:custom-account-user-userGroups-jointable:start
    -- anchor:custom-account-user-userGroups-jointable:end
);

ALTER TABLE `ACCOUNT`.`user_userGroups`
ADD FOREIGN KEY (`user_id`)
REFERENCES `ACCOUNT`.`User` (`id`);

ALTER TABLE `ACCOUNT`.`user_userGroups`
ADD FOREIGN KEY (`userGroup_id`)
REFERENCES `ACCOUNT`.`UserGroup` (`id`);
-- < User

-- > UserGroup
-- < UserGroup

-- > EngineNode
-- < EngineNode

-- > EngineNodeService
-- < EngineNodeService

-- > EngineService
-- < EngineService

-- > StateTask
-- < StateTask

-- > StateTimer
-- < StateTimer

-- > TimeTask
-- < TimeTask

-- > TimeWindow
-- < TimeWindow

-- > TimeWindowGroup
CREATE TABLE `WORKFLOW`.`timeWindowGroup_timeWindows` (
    `timeWindowGroup_id` BIGINT,
    `timeWindow_id` BIGINT
    -- @anchor:workflow-timeWindowGroup-timeWindows-jointable:start
    -- @anchor:workflow-timeWindowGroup-timeWindows-jointable:end
    -- anchor:custom-workflow-timeWindowGroup-timeWindows-jointable:start
    -- anchor:custom-workflow-timeWindowGroup-timeWindows-jointable:end
);

ALTER TABLE `WORKFLOW`.`timeWindowGroup_timeWindows`
ADD FOREIGN KEY (`timeWindowGroup_id`)
REFERENCES `WORKFLOW`.`TimeWindowGroup` (`id`);

ALTER TABLE `WORKFLOW`.`timeWindowGroup_timeWindows`
ADD FOREIGN KEY (`timeWindow_id`)
REFERENCES `WORKFLOW`.`TimeWindow` (`id`);
-- < TimeWindowGroup

-- > Workflow
-- < Workflow

-- > Asset
-- < Asset

-- > ExternalAsset
-- < ExternalAsset

-- > FileAsset
-- < FileAsset

-- > InternalAsset
-- < InternalAsset

-- > InternalAssetChunk
-- < InternalAssetChunk

-- > RemoteAsset
-- < RemoteAsset

-- > City
-- < City

-- > Country
-- < Country

-- > Street
-- < Street

-- > Cat
-- < Cat

-- > CatBreed
-- < CatBreed

-- > Owner
-- < Owner

-- > Dummy
-- < Dummy
-- anchor:join-tables:end

-- ------------------ --
-- Add Foreign Keys   --
-- ------------------ --

-- anchor:foreign-keys:start
-- > Execution
-- < Execution

-- > IdCounter
-- < IdCounter

-- > ParamTargetValue
-- < ParamTargetValue

-- > TagValuePair
-- < TagValuePair

-- > Thumbnail
-- < Thumbnail

-- > Validation
-- < Validation

-- > Account
-- < Account

-- > Component
-- < Component

-- > DataAccess
-- < DataAccess

-- > HelpInfo
-- < HelpInfo

-- > Menu
-- < Menu

-- > MenuItem
-- < MenuItem

-- > Portal
-- < Portal

-- > Profile
-- < Profile

-- > Screen
-- < Screen

-- > ScreenProfile
-- < ScreenProfile

-- > User
-- < User

-- > UserGroup
-- < UserGroup

-- > EngineNode
-- < EngineNode

-- > EngineNodeService
ALTER TABLE `WORKFLOW`.`EngineNodeService`
ADD FOREIGN KEY (`engineNode_id`)
REFERENCES `WORKFLOW`.`EngineNode` (`id`);

ALTER TABLE `WORKFLOW`.`EngineNodeService`
ADD FOREIGN KEY (`engineService_id`)
REFERENCES `WORKFLOW`.`EngineService` (`id`);
-- < EngineNodeService

-- > EngineService
-- < EngineService

-- > StateTask
-- < StateTask

-- > StateTimer
-- < StateTimer

-- > TimeTask
-- < TimeTask

-- > TimeWindow
-- < TimeWindow

-- > TimeWindowGroup
-- < TimeWindowGroup

-- > Workflow
-- < Workflow

-- > Asset
-- < Asset

-- > ExternalAsset
-- < ExternalAsset

-- > FileAsset
-- < FileAsset

-- > InternalAsset
-- < InternalAsset

-- > InternalAssetChunk
ALTER TABLE `ASSETS`.`InternalAssetChunk`
ADD FOREIGN KEY (`internalAsset_id`)
REFERENCES `ASSETS`.`InternalAsset` (`id`);
-- < InternalAssetChunk

-- > RemoteAsset
-- < RemoteAsset

-- > City
ALTER TABLE `CITIES`.`City`
ADD FOREIGN KEY (`country_id`)
REFERENCES `CITIES`.`Country` (`id`);
-- < City

-- > Country
-- < Country

-- > Street
ALTER TABLE `CITIES`.`Street`
ADD FOREIGN KEY (`city_id`)
REFERENCES `CITIES`.`City` (`id`);
-- < Street

-- > Cat
-- < Cat

-- > CatBreed
-- < CatBreed

-- > Owner
-- < Owner

-- > Dummy
-- < Dummy
-- anchor:foreign-keys:end

-- ------------------ --
-- Custom Statements  --
-- ------------------ --

-- @anchor:statements:start
-- @anchor:statements:end
-- anchor:custom-statements:start
-- anchor:custom-statements:end