diff --git a/.do/deploy.template.yaml b/.do/deploy.template.yaml
new file mode 100644
index 0000000000..10d5a4f1f9
--- /dev/null
+++ b/.do/deploy.template.yaml
@@ -0,0 +1,24 @@
+spec:
+ name: nocodb
+ services:
+ - name: nocodb
+ image:
+ registry_type: DOCKER_HUB
+ registry: nocodb
+ repository: nocodb
+ tag: latest
+ run_command: "./server/scripts/digitalocean-postbuild.sh"
+ instance_size_slug: "basic-s"
+ health_check:
+ initial_delay_seconds: 10
+ http_path: /api/health
+ envs:
+ - key: NODE_ENV
+ value: "production"
+ - key: DATABASE_URL
+ scope: RUN_TIME
+ value: ${postgres.DATABASE_URL}
+ databases:
+ - name: postgres
+ engine: PG
+ production: false
diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index 5cfc98e157..a7e67719aa 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -635,3 +635,42 @@ jobs:
name: cy-quick-pg-snapshots
path: scripts/cypress/screenshots
retention-days: 2
+ unit-tests:
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Setup Node
+ uses: actions/setup-node@v1
+ with:
+ node-version: 16.15.0
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - name: Cache node modules
+ uses: actions/cache@v2
+ env:
+ cache-name: cache-node-modules
+
+ with:
+ # npm cache files are stored in `~/.npm` on Linux/macOS
+ path: ~/.npm
+ key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-build-${{ env.cache-name }}-
+ ${{ runner.os }}-build-
+ ${{ runner.os }}-
+ - name: install dependencies nocodb-sdk
+ working-directory: ./packages/nocodb-sdk
+ run: npm install
+ - name: build nocodb-sdk
+ working-directory: ./packages/nocodb-sdk
+ run: npm run build:main
+ - name: Install dependencies
+ working-directory: ./packages/nocodb
+ run: npm install
+ - name: setup mysql
+ working-directory: ./
+ run: docker-compose -f ./scripts/docker-compose-cypress.yml up -d
+ - name: run unit tests
+ working-directory: ./packages/nocodb
+ run: npm run test:unit
\ No newline at end of file
diff --git a/.run/Clear metadb.run.xml b/.run/Clear metadb.run.xml
index b86ac7542d..cb1fde35ef 100644
--- a/.run/Clear metadb.run.xml
+++ b/.run/Clear metadb.run.xml
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/.run/Run GUI v2.run.xml b/.run/Run GUI v2.run.xml
deleted file mode 100644
index e5333e2ee0..0000000000
--- a/.run/Run GUI v2.run.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.run/Run NocoDB Sqlite.run.xml b/.run/Run NocoDB Sqlite.run.xml
index 58f55251c6..19996f59ba 100644
--- a/.run/Run NocoDB Sqlite.run.xml
+++ b/.run/Run NocoDB Sqlite.run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/.run/build.run.xml b/.run/build.run.xml
index 81aa853d99..24c699e00d 100644
--- a/.run/build.run.xml
+++ b/.run/build.run.xml
@@ -1,5 +1,5 @@
-
+
@@ -11,4 +11,4 @@
-
+
\ No newline at end of file
diff --git a/.run/dev.run.xml b/.run/dev.run.xml
index 7ad2f35bdc..af78ef6e6c 100644
--- a/.run/dev.run.xml
+++ b/.run/dev.run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/.run/start_nocodb.run.xml b/.run/start_nocodb.run.xml
new file mode 100644
index 0000000000..ef400213e6
--- /dev/null
+++ b/.run/start_nocodb.run.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.run/watch_run_mysql.run.xml b/.run/watch_run_mysql.run.xml
index 5bcb77d912..c4e0fad3eb 100644
--- a/.run/watch_run_mysql.run.xml
+++ b/.run/watch_run_mysql.run.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/packages/nc-gui/components.d.ts b/packages/nc-gui/components.d.ts
index 3b83faf7fa..3e6aec3272 100644
--- a/packages/nc-gui/components.d.ts
+++ b/packages/nc-gui/components.d.ts
@@ -234,6 +234,7 @@ declare module '@vue/runtime-core' {
MdiUpload: typeof import('~icons/mdi/upload')['default']
MdiUploadOutline: typeof import('~icons/mdi/upload-outline')['default']
MdiViewListOutline: typeof import('~icons/mdi/view-list-outline')['default']
+ MdiWarning: typeof import('~icons/mdi/warning')['default']
MdiWhatsapp: typeof import('~icons/mdi/whatsapp')['default']
MdiXml: typeof import('~icons/mdi/xml')['default']
MiCircleWarning: typeof import('~icons/mi/circle-warning')['default']
diff --git a/packages/nc-gui/components/smartsheet-column/AdvancedOptions.vue b/packages/nc-gui/components/smartsheet-column/AdvancedOptions.vue
index f0c04560cc..97d68eb9ca 100644
--- a/packages/nc-gui/components/smartsheet-column/AdvancedOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/AdvancedOptions.vue
@@ -1,5 +1,5 @@
@@ -66,7 +88,7 @@ vModel.value.au = !!vModel.value.au
-
+
-
+
- {{ sqlUi.getDefaultValueForDatatype(vModel.dt) }}
+ {{ sampleValue }}
diff --git a/packages/nc-gui/components/smartsheet-toolbar/ColumnFilter.vue b/packages/nc-gui/components/smartsheet-toolbar/ColumnFilter.vue
index 75683e7e77..3a845b81d0 100644
--- a/packages/nc-gui/components/smartsheet-toolbar/ColumnFilter.vue
+++ b/packages/nc-gui/components/smartsheet-toolbar/ColumnFilter.vue
@@ -21,10 +21,11 @@ interface Props {
parentId?: string
autoSave: boolean
hookId?: string
+ showLoading?: boolean
modelValue?: Filter[]
}
-const { nested = false, parentId, autoSave = true, hookId = null, modelValue } = defineProps()
+const { nested = false, parentId, autoSave = true, hookId = null, modelValue, showLoading = true } = defineProps()
const emit = defineEmits(['update:filtersLength'])
@@ -46,9 +47,7 @@ const { filters, deleteFilter, saveOrUpdate, loadFilters, addFilter, addFilterGr
activeView,
parentId,
computed(() => autoSave),
- () => {
- reloadDataHook.trigger()
- },
+ () => reloadDataHook.trigger(showLoading),
modelValue || nestedFilters.value,
!modelValue,
)
@@ -134,8 +133,8 @@ defineExpose({