From 0e6a0a171e19a560353abef9515853be7a5e0bcd Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Wed, 25 Feb 2026 17:59:23 +0530 Subject: [PATCH 1/5] fix: column encryption support for other attributes --- .../table-[table]/columns/+page.svelte | 4 +- .../columns/encryptCheckbox.svelte | 107 ++++++++++++++++++ .../table-[table]/columns/longtext.svelte | 13 ++- .../table-[table]/columns/mediumtext.svelte | 13 ++- .../table-[table]/columns/text.svelte | 13 ++- .../table-[table]/columns/varchar.svelte | 24 +++- .../table-[table]/createColumn.svelte | 4 +- .../table-[table]/spreadsheet.svelte | 5 +- 8 files changed, 167 insertions(+), 16 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index fe293e6b8d..5b4075bc8a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -15,7 +15,7 @@ Tooltip, Typography } from '@appwrite.io/pink-svelte'; - import { isRelationship, isSpatialType, isString } from '../rows/store'; + import { isRelationship, isSpatialType, isTextType } from '../rows/store'; import { columns, type Columns, @@ -443,7 +443,7 @@ {/if} - {#if isString(column) && column.encrypt} + {#if isTextType(column) && 'encrypt' in column && column.encrypt} + import { page } from '$app/state'; + import { isCloud } from '$lib/system'; + import { getChangePlanUrl } from '$lib/stores/billing'; + import { currentPlan } from '$lib/stores/organization'; + import { + ActionMenu, + Popover, + Layout, + Selector, + Tag, + Tooltip, + Typography, + Link + } from '@appwrite.io/pink-svelte'; + + let { + encrypt = $bindable(false), + editing = false, + disabled = false, + id = 'encrypt' + }: { + encrypt?: boolean; + editing?: boolean; + disabled?: boolean; + id?: string; + } = $props(); + + const organizationId = page.data?.organization?.$id ?? page.data?.project?.$id; + const supportsEncryption = isCloud ? $currentPlan?.databasesAllowEncrypt : true; + + + +
+ + + + + + + + Protect column against data leaks for best privacy compliance. Encrypted + columns cannot be queried. + + + + + + Available on Pro plan. Upgrade + to enable encrypted columns. + + + + +
+ + + Encryption can only be set when creating the column. + +
+ + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/longtext.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/longtext.svelte index 8087541af7..92580dcf5d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/longtext.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/longtext.svelte @@ -17,7 +17,8 @@ key, required: data.required, xdefault: data.default, - array: data.array + array: data.array, + encrypt: data.encrypt }); } export async function updateLongtext( @@ -42,17 +43,21 @@ + min={data.encrypt ? 150 : 1} + max={16383} + helper={data.encrypt + ? 'Encrypted varchar columns require a minimum size of 150.' + : undefined} /> {#if !editing} @@ -173,3 +185,7 @@ {disabled} bind:array={data.array} bind:required={data.required} /> + + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte index bddf437625..ba23a58a54 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte @@ -47,6 +47,7 @@ required: column?.required ?? false, array: column?.array ?? false, default: column?.default ?? null, + encrypt: (column as { encrypt?: boolean })?.encrypt ?? false, ...column } as Partial); @@ -60,7 +61,8 @@ data = { required: false, array: false, - default: null + default: null, + encrypt: false }; /* default to text */ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index f4f7e46b77..9026e17764 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -16,8 +16,7 @@ buildWildcardColumnsQuery, isRelationship, isRelationshipToMany, - isSpatialType, - isString + isSpatialType, isTextType } from './rows/store'; import { columns, @@ -1072,7 +1071,7 @@ {@const isEmptyArray = formatted === 'Empty'} {@const isDatetimeAttribute = rowColumn.type === 'datetime'} {@const isEncryptedAttribute = - isString(rowColumn) && rowColumn.encrypt} + isTextType(rowColumn) && 'encrypt' in rowColumn && rowColumn.encrypt} {#if isDatetimeAttribute} Timestamp From c7a52060eb5adcd1e62850417acee41ed76275d5 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Thu, 26 Feb 2026 13:07:56 +0530 Subject: [PATCH 2/5] format --- .../database-[database]/table-[table]/spreadsheet.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index 9026e17764..86cc3c7c7b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -16,7 +16,8 @@ buildWildcardColumnsQuery, isRelationship, isRelationshipToMany, - isSpatialType, isTextType + isSpatialType, + isTextType } from './rows/store'; import { columns, @@ -1071,7 +1072,9 @@ {@const isEmptyArray = formatted === 'Empty'} {@const isDatetimeAttribute = rowColumn.type === 'datetime'} {@const isEncryptedAttribute = - isTextType(rowColumn) && 'encrypt' in rowColumn && rowColumn.encrypt} + isTextType(rowColumn) && + 'encrypt' in rowColumn && + rowColumn.encrypt} {#if isDatetimeAttribute} Timestamp From c3968ad8c074dcfc451d0f752b15abf14b18cbdb Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Thu, 26 Feb 2026 13:33:32 +0530 Subject: [PATCH 3/5] fix --- .../table-[table]/columns/encryptCheckbox.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte index 2f0dd6c948..525828fd49 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte @@ -49,7 +49,7 @@ disabled={editing || disabled} class:cursor-pointer={!editing} class:cursor-not-allowed={editing || disabled} - on:click={(e) => { + onclick={(e) => { if (!supportsEncryption) { toggle(e); } else { @@ -59,7 +59,7 @@ Encrypted {#if !supportsEncryption} - Pro + Pro {/if} From 1b1f7448b19a7c8962a2cbae9d759ab4127b4ef0 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Thu, 26 Feb 2026 14:53:15 +0530 Subject: [PATCH 4/5] addressed rabbit --- .../table-[table]/columns/encryptCheckbox.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte index 525828fd49..32a55c2114 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte @@ -26,8 +26,8 @@ id?: string; } = $props(); - const organizationId = page.data?.organization?.$id ?? page.data?.project?.$id; - const supportsEncryption = isCloud ? $currentPlan?.databasesAllowEncrypt : true; + const organizationId = page.data?.organization?.$id ?? page.data?.project?.teamId; + const supportsEncryption = $derived(isCloud ? $currentPlan?.databasesAllowEncrypt : true); From 1649d9b7e90c56505ccf5e3c26f35a2ed1628b18 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 26 Feb 2026 15:20:02 +0530 Subject: [PATCH 5/5] Update src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .../table-[table]/columns/encryptCheckbox.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte index 32a55c2114..f70652ae38 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/encryptCheckbox.svelte @@ -47,7 +47,7 @@