startSetup(); /** * Create table 'oauth_consumer' */ $table = $installer->getConnection()->newTable( $installer->getTable('oauth_consumer') )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Entity Id' )->addColumn( 'created_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT], 'Created At' )->addColumn( 'updated_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => true, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_UPDATE], 'Updated At' )->addColumn( 'name', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Name of consumer' )->addColumn( 'key', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => false], 'Key code' )->addColumn( 'secret', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => false], 'Secret code' )->addColumn( 'callback_url', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 512, [], 'Callback URL' )->addColumn( 'rejected_callback_url', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 512, ['nullable' => false], 'Rejected callback URL' )->addIndex( $installer->getIdxName( $installer->getTable('oauth_consumer'), ['key'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['key'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName( $installer->getTable('oauth_consumer'), ['secret'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['secret'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName('oauth_consumer', ['created_at']), ['created_at'] )->addIndex( $installer->getIdxName('oauth_consumer', ['updated_at']), ['updated_at'] )->setComment( 'OAuth Consumers' ); $installer->getConnection()->createTable($table); $adminTable = $installer->getTable('admin_user'); $customerTable = $installer->getTable('customer_entity'); /** * Create table 'oauth_token' */ $table = $installer->getConnection()->newTable( $installer->getTable('oauth_token') )->addColumn( 'entity_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Entity ID' )->addColumn( 'consumer_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true], 'Oauth Consumer ID' )->addColumn( 'admin_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true], 'Admin user ID' )->addColumn( 'customer_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => true], 'Customer user ID' )->addColumn( 'type', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 16, ['nullable' => false], 'Token Type' )->addColumn( 'token', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => false], 'Token' )->addColumn( 'secret', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => false], 'Token Secret' )->addColumn( 'verifier', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => true], 'Token Verifier' )->addColumn( 'callback_url', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 512, ['nullable' => false], 'Token Callback URL' )->addColumn( 'revoked', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => 0], 'Is Token revoked' )->addColumn( 'authorized', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => 0], 'Is Token authorized' )->addColumn( 'user_type', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, [], 'User type' )->addColumn( 'created_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT], 'Token creation timestamp' )->addIndex( $installer->getIdxName( $installer->getTable('oauth_token'), ['consumer_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_INDEX ), ['consumer_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_INDEX] )->addIndex( $installer->getIdxName( $installer->getTable('oauth_token'), ['token'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['token'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addForeignKey( $installer->getFkName('oauth_token', 'admin_id', 'admin_user', 'user_id'), 'admin_id', $adminTable, 'user_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('oauth_token', 'consumer_id', 'oauth_consumer', 'entity_id'), 'consumer_id', $installer->getTable('oauth_consumer'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->addForeignKey( $installer->getFkName('oauth_token', 'customer_id', 'customer_entity', 'entity_id'), 'customer_id', $customerTable, 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'OAuth Tokens' ); $installer->getConnection()->createTable($table); /** * Create table 'oauth_nonce' */ $table = $installer->getConnection()->newTable( $installer->getTable('oauth_nonce') )->addColumn( 'nonce', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 32, ['nullable' => false], 'Nonce String' )->addColumn( 'timestamp', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, 10, ['unsigned' => true, 'nullable' => false], 'Nonce Timestamp' )->addColumn( 'consumer_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true, 'nullable' => false], 'Consumer ID' )->addIndex( $installer->getIdxName( $installer->getTable('oauth_nonce'), ['nonce', 'consumer_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['nonce', 'consumer_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addForeignKey( $installer->getFkName('oauth_nonce', 'consumer_id', 'oauth_consumer', 'entity_id'), 'consumer_id', $installer->getTable('oauth_consumer'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE )->setComment( 'OAuth Nonce' ); $installer->getConnection()->createTable($table); $table = $installer->getConnection()->newTable( $installer->getTable('integration') )->addColumn( 'integration_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true], 'Integration ID' )->addColumn( 'name', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Integration name is displayed in the admin interface' )->addColumn( 'email', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, ['nullable' => false], 'Email address of the contact person' )->addColumn( 'endpoint', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Endpoint for posting consumer credentials' )->addColumn( 'status', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false], 'Integration status' )->addColumn( 'consumer_id', \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER, null, ['unsigned' => true], 'Oauth consumer' )->addColumn( 'created_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_INIT], 'Creation Time' )->addColumn( 'updated_at', \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP, null, ['nullable' => false, 'default' => \Magento\Framework\DB\Ddl\Table::TIMESTAMP_UPDATE], 'Update Time' )->addColumn( 'setup_type', \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT, null, ['unsigned' => true, 'nullable' => false, 'default' => 0], 'Integration type - manual or config file' )->addColumn( 'identity_link_url', \Magento\Framework\DB\Ddl\Table::TYPE_TEXT, 255, [], 'Identity linking Url' )->addIndex( $installer->getIdxName( $installer->getTable('integration'), ['name'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['name'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addIndex( $installer->getIdxName( $installer->getTable('integration'), ['consumer_id'], \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE ), ['consumer_id'], ['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE] )->addForeignKey( $installer->getFkName('integration', 'consumer_id', $installer->getTable('oauth_consumer'), 'entity_id'), 'consumer_id', $installer->getTable('oauth_consumer'), 'entity_id', \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE ); $installer->getConnection()->createTable($table); $installer->endSetup(); } }