ToolJet/server/migrations/1651056032052-CreatePlugins.ts
Gandharv a1fd1fc301
[Feature] Make plugins installable (#3069)
* feat: add user avatar

* update: @nest/platform-express from 8.0.0 to 8.4.4

* add avatar_id in login response

* add user avatar upload in frontend

* align cross divider with layout icons'

* generate nest model - extensions

* Add extensions module

* Add extension to datasouce

* add not implemented check

* create extension

* refactor

* cleanup

* fix tests

* reduce the avatar size on homepage

* poc: run js code from string

* resolve conflicts

* fix conflicts

* add globals

* add new route

* add icon, manifest file upload

* complete user flow

* add flow for data queries

* add dynamic manifest instead of local datasource types

* add version attr

* remove unused code

* add version

* rename extension(s) -> plugins(s)

* add test connection method

* feat: add marketplace listing page

* Add install plugin cmd + missing attrs {name, repo, desc} to plugin

* add missing icon

* - Add npm workspaces for marketplace monorepo
- Added cassandra datasource plugin
- Created upload to s3 script
- Created plugins.json entry file

* install plugin from s3 bucket

* cleanup

* update pkg locks

* fix icon render

* cleanup

* marketplace changes

* ui changes

* operations file load fix + revert vm2

* update module from string to 3.2.1

* load plugins.json from local file instead of remote

* install plugin from local file if not production environment

* add sqlite

* feat: add plivo api plugin

* exp: add heroku 22 stack

* update assets include path

* Revert "exp: add heroku 22 stack"

This reverts commit a8926b36e1.

* add integrations link

* Add casl ability for plugin

* load host from env else fallback to default

* update imports

* remove sqlite

* typo

* add marketplace flag to cli command

* move ts and ncc to devDep

* add hygen templates for marketplace

* cli tree-node path fix

* template indent fix

* TOOLJET_URL -> MARKETPLACE_TOOLJET_URL

* add tests

* refactor: move to plugins.helper for get-service helper utility

* fix; typo

* update package-lock.json

* review changes

* remove a href

* remove bg color + redirect issue due to href

* add test url

* fix crash on search

* remove extra slash

* feat: allow plugin to be installed from github repository

* remove unwanted args from cli command

* add repo attr while save

* feat: add feature toggle for marketplace feature

* fix: make default config as false

* chore: remove hyperlink

* fix: failing build

* chore: update s3 url to point to prod

* fix failing test

* fix test

* fix: test case

* update module from string pkg

* update env

* fix test

* fix test

* add readme file

* Update README.md

Co-authored-by: Akshay Sasidharan <akshaysasidharan93@gmail.com>
2022-10-27 16:59:43 +05:30

93 lines
2.2 KiB
TypeScript

import { MigrationInterface, QueryRunner, Table } from 'typeorm';
export class CreatePlugins1651056032052 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: 'plugins',
columns: [
{
name: 'id',
type: 'uuid',
isGenerated: true,
default: 'gen_random_uuid()',
isPrimary: true,
},
{
name: 'plugin_id',
type: 'varchar',
},
{
name: 'name',
type: 'varchar',
},
{
name: 'repo',
type: 'varchar',
},
{
name: 'description',
type: 'varchar',
},
{
name: 'version',
type: 'varchar',
},
{
name: 'index_file_id',
type: 'uuid',
},
{
name: 'operations_file_id',
type: 'uuid',
},
{
name: 'icon_file_id',
type: 'uuid',
},
{
name: 'manifest_file_id',
type: 'uuid',
},
{
name: 'created_at',
type: 'timestamp',
isNullable: true,
default: 'now()',
},
{
name: 'updated_at',
type: 'timestamp',
isNullable: true,
default: 'now()',
},
],
foreignKeys: [
{
referencedTableName: 'files',
referencedColumnNames: ['id'],
columnNames: ['index_file_id'],
},
{
referencedTableName: 'files',
referencedColumnNames: ['id'],
columnNames: ['operations_file_id'],
},
{
referencedTableName: 'files',
referencedColumnNames: ['id'],
columnNames: ['icon_file_id'],
},
{
referencedTableName: 'files',
referencedColumnNames: ['id'],
columnNames: ['manifest_file_id'],
},
],
}),
true
);
}
public async down(queryRunner: QueryRunner): Promise<void> {}
}