ToolJet/docs/static/img/enterprise.svg
Akshay 602b1b4ad3
Feature: Tooljet Database (#4951)
* wip

* internal db per workspace

* fix async query

* feat: add storage layer route

* feat: add drawer component

* feat: add react-table to load data

* feat: add columns form

* feat: add create column form, create row form

* feat: add postgrest js

* add tooljet db controller to proxy requests to postgrest

* util: add postgrest filter builder helper utility

* feat: add filter popover

* use helper utility for building query

* add sortable filters

* add box shadow for filter popup

* use overlay trigger

* use react select

* add new column addition

* add dropdown for table header, table list

* Move filter.jsx

* feat: add sort popover

* feat: add postgrest js .order fn

* setup tooljetdb with restricted grants for users

* make db schemas added loaded dynamically on postgrest server

* fix query

* sign jwt token to auth user at postgrest

* update db schema user with workspace

* chore: add table listing

* update data and columns from api

* feat: add context api for sharing data

* add ability to create table, view tables and add columns

* use columns for sort from context api

* fix ormconfig

* feat: add table listing integration

* feat: add create table integration

* fix for rds deployment

* add internal table translation instead of schema

* remove tooljetdb as a datasource

* wrap placeholder on proxy query

* add active workspace guard

* scope tooljetdb by workspace

* update active workspace guard

* seperate proxy related concerns to different service

* make use of org id param

* rename storage layer to tooljet databse

* update specs

* feat: Update list when new table added

* feat: add create column

* chore: add orgId to url + misc changes

* chore: move popover to separate file

* remove unused var

* rename files

* feat: add multiple columns

* feat: add new row

* removes postgrest-js from pkg lock

* feat: add row data

* feat: add sorting

* feat: allow row deletion

* feat: add search

* feat: add filtering

* feat: add edit mode

* feat: add columns while edit table

* add view table action

* update setup for column constraint

* fix query

* integrate view_table, primary key field

* render toogle for boolean data type

* update view table query for primary key

* fetch metadata refactor

* add capability to set default values

* feat: allow deletion of record based on primary key

* feat: add default value while creating column

* send query from sort & filter component

* css changes

* allow empty data

* add requested changes

* add err message

* add common fn

* allow sort + filter

* remove unwanted defaults key

* css changes

* add more operators

* dark mode fixes

* add drawer footer

* add loader for list tables

* add dashboard design changes

* design changes

* add capability to drop table and delete column

* add breadcrumbs

* design changes

* add profile

* refactor tooljetdb controller

* update routes

* add empty page changes

* delete column fix

* fix delete column

* design changes

* fetch tables post delete

* homepage changes

* hide ellipsis on hover

* add org settings page

* add edit + create org

* add notification center

* fix: group permissions switch issue

* add logo

* remove anchor tag

* fix merge conflicts

* css changes

* add err boundary

* setup query editor

* css changes

* fix: merge conflicts

* add menuPortal prop to filterform and sort form

* fix seed

* fix: build

* design changes

* design changes + refactor code

* fix imports

* fix: drawer issue on delete table

* add search box changes

* fix: tablename max-length 255

* fix: set newly created table as selected item

* remove edit column option

* added badges to enterprise only features

* disable edit column

* table styles

* fix: popover position, placeholder default

* fix: display boolean values in table

* fix: tooljet database default type values

* css changes

* add query manager for tooljet db with create and list row

* dark mode fixes

* remove Header component

* add ability to delete tooljetdb rows from query manager

* add ability to update tooljetdb rows

* dark mode fixes

* css changes

* display actions icon on hover

* folder onclick change

* add empty page styles

* fix proxy requests

* feat: randomize icon creation

* add max items per page prop for pagination

* removes unwanted position attr

* add table name validation + disable submit btn while api fetch

* [Bugfix] internal storage toast  | trigger toasts for running preview db queries (#5019)

* resolves: no toasts are fired when preview query is run for db queries

* fire success toast for created and no content status text for query success

* remove invalid migration

* skip migration if tooljet db already created

* fix: app clone icon param

* fix: show confirmation box if filter options are empty in query (#5021)

* for now: show native confirmation box of the brower to confirm the delete all query

* typo

* Revert "typo"

This reverts commit b5ce5ed889.

* cleaned

* cleaned

* show confirmation box if filter options are empty in query

* [Refactor/Bugfix] database query (#5028)

* refactored list rows operations

* remove unwanted cls

* refactor create row

* reafactored update rows

* refactored delete rows

* padding fix for tj-query

* add static templates

* review changes

* remove unused file

* Chore: tooljetdb render setup (#5033)

* add postgrest for render preview deploy

* pin version

* add healthCheckPath

* remove health check

* handle database url parsing db params

* add defaults for tooljetdb env

* fix hostname

* handle env in migration files

* refactor dbconfig build

* fix pg db usage

* add parsed env context

* add tooljetdb env

* refactor db config utils

Co-authored-by: gandharv <[email protected]>
Co-authored-by: Shubhendra <[email protected]>
Co-authored-by: Arpit <[email protected]>
2022-12-23 02:09:57 +05:30

9 lines
No EOL
16 KiB
XML

<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="48" height="48">
<title>company-27</title>
<defs>
<image width="380" height="389" id="img1" href="data:image/png;base64,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"/>
</defs>
<style>
</style>
<use id="Background" href="#img1" x="66" y="61"/>
</svg>