From 83c8ef31dcb130aa5bb8f89904ee437e047ed33a Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 30 Jul 2025 14:19:10 +0530 Subject: [PATCH] Branch merge - 'main' into '1.8.x'. --- src/lib/components/filters/content.svelte | 2 +- src/lib/layout/gridHeader.svelte | 8 +----- .../database-[database]/string.svelte | 4 +-- .../table-[table]/+layout.svelte | 10 +++---- .../table-[table]/columns/boolean.svelte | 4 +-- .../columns/createColumnDropdown.svelte | 12 ++++---- .../table-[table]/columns/datetime.svelte | 4 +-- .../table-[table]/columns/edit.svelte | 2 +- .../table-[table]/columns/email.svelte | 4 +-- .../table-[table]/columns/enum.svelte | 4 +-- .../table-[table]/columns/float.svelte | 4 +-- .../table-[table]/columns/integer.svelte | 4 +-- .../table-[table]/columns/ip.svelte | 4 +-- .../table-[table]/columns/relationship.svelte | 4 +-- .../table-[table]/columns/string.svelte | 4 +-- .../table-[table]/columns/url.svelte | 4 +-- .../table-[table]/create/+page.svelte | 6 ++-- .../table-[table]/relationshipsModal.svelte | 2 +- .../table-[table]/row-[row]/+layout.ts | 2 +- .../table-[table]/row-[row]/columns/store.ts | 2 +- .../table-[table]/row-[row]/delete.svelte | 28 +++++++++---------- .../table-[table]/settings/displayName.svelte | 6 ++-- .../settings/updateStatus.svelte | 4 +-- .../table-[table]/store.ts | 8 +++--- .../table-[table]/subNavigation.svelte | 10 +++---- .../table-[table]/table.svelte | 28 +++++++++---------- 26 files changed, 83 insertions(+), 91 deletions(-) diff --git a/src/lib/components/filters/content.svelte b/src/lib/components/filters/content.svelte index 1fd218fb9..5b9ca0d54 100644 --- a/src/lib/components/filters/content.svelte +++ b/src/lib/components/filters/content.svelte @@ -85,7 +85,7 @@
-
+ {title}
- +
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/string.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/string.svelte index 86ea8a253..66677ff53 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/string.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/string.svelte @@ -104,9 +104,9 @@ bind:value={data.default} /> {/if} - Indicate whether this is a required attribute + Indicate whether this is a required column - Indicate whether this attribute should act as an array, with the default value set as an empty + Indicate whether this column should act as an array, with the default value set as an empty array. diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index b70d5b5cb..e5a7dccdd 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -2,13 +2,13 @@ import { writable } from 'svelte/store'; import type { Option } from './columns/store'; - const createAttributeArgs = writable({ + const createColumnArgs = writable({ showCreate: false, selectedOption: null as Option['name'] | null }); export const initCreateColumn = (option: Option['name']) => { - createAttributeArgs.set({ showCreate: true, selectedOption: option }); + createColumnArgs.set({ showCreate: true, selectedOption: option }); }; const showCreateIndex = writable(false); @@ -24,7 +24,7 @@ import { onMount } from 'svelte'; import { table } from './store'; import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter'; - import CreateAttribute from './createColumn.svelte'; + import CreateColumn from './createColumn.svelte'; import { CreateColumnPanel } from '$lib/commandCenter/panels'; import { database } from '../store'; import { project } from '$routes/(console)/project-[region]-[project]/store'; @@ -204,8 +204,8 @@ -{#if $createAttributeArgs.showCreate} - +{#if $createColumnArgs.showCreate} + {/if} {#if $showCreateIndex} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte index 7c43d1f73..480d18517 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte @@ -93,11 +93,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/createColumnDropdown.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/createColumnDropdown.svelte index c5d729804..bfc31adc6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/createColumnDropdown.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/createColumnDropdown.svelte @@ -14,26 +14,26 @@ {:else} - - {#each columnOptions as attribute} + {#each columnOptions as column} { - selectedOption = attribute.name; + selectedOption = column.name; showCreate = true; }}> - {attribute.name} + {column.name} {/each} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte index 90a3e076f..3de345435 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte @@ -85,11 +85,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/edit.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/edit.svelte index caccb58d9..6911c3333 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/edit.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/edit.svelte @@ -53,7 +53,7 @@ } $: onShow(showEdit); - $: title = `Update ${columnOptions.find((v) => v.name === option.name)?.sentenceName ?? ''} attribute`; + $: title = `Update ${columnOptions.find((v) => v.name === option.name)?.sentenceName ?? ''} column`; function onShow(show: boolean) { if (show) { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/email.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/email.svelte index 59fc70d70..4e2cea63c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/email.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/email.svelte @@ -86,11 +86,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/enum.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/enum.svelte index fd9ad73f0..0301326a7 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/enum.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/enum.svelte @@ -117,11 +117,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/float.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/float.svelte index 61069f2a5..a984dc1f8 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/float.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/float.svelte @@ -115,11 +115,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/integer.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/integer.svelte index 07a9a4414..b28e5cde8 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/integer.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/integer.svelte @@ -113,11 +113,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/ip.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/ip.svelte index 6e977d5ad..5688637a5 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/ip.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/ip.svelte @@ -85,11 +85,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/relationship.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/relationship.svelte index 896d5ca8c..9026ce851 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/relationship.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/relationship.svelte @@ -108,8 +108,8 @@ function updateKeyName() { if (!editing) { - const collection = tableList.tables.find((n) => n.$id === data.relatedTable); - data.key = camelize(collection.name); + const table = tableList.tables.find((n) => n.$id === data.relatedTable); + data.key = camelize(table.name); } } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte index ab3a83041..5ea2fc165 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte @@ -159,8 +159,8 @@ - Protect attribute against data leaks for best privacy compliance. Encrypted - attributes cannot be queried. + Protect column against data leaks for best privacy compliance. Encrypted + columns cannot be queried. diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/url.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/url.svelte index 2cadeddfe..0c7a33053 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/url.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/url.svelte @@ -86,11 +86,11 @@ label="Required" bind:checked={data.required} disabled={data.array} - description="Indicate whether this attribute is required" /> + description="Indicate whether this column is required" /> + description="Indicate whether this column is an array. Defaults to an empty array." /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/create/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/create/+page.svelte index 8fd51dd9d..7b8a4bb65 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/create/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/create/+page.svelte @@ -22,7 +22,7 @@ let formComponent: Form; let isSubmitting = writable(false); - type CreateDocument = { + type CreateRow = { id?: string; row: object; permissions: string[]; @@ -44,7 +44,7 @@ columns: availableColumns }; - return writable({ ...initial }); + return writable({ ...initial }); } const createRow = createRowWritable(); @@ -66,7 +66,7 @@ type: 'success' }); trackEvent(Submit.RowCreate, { - customId: !!$createRow.id // todo: @itznotabug - change store name + customId: !!$createRow.id }); goto( `${base}/project-${page.params.region}-${page.params.project}/databases/database-${page.params.database}/table-${page.params.table}/row-${$id}` diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/relationshipsModal.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/relationshipsModal.svelte index b834a00c7..c61a3ee1c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/relationshipsModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/relationshipsModal.svelte @@ -8,7 +8,7 @@ import { Table } from '@appwrite.io/pink-svelte'; export let show = false; - export let data: Partial[]; + export let data: Partial[]; export let selectedRelationship: Models.ColumnRelationship = null; const databaseId = page.params.database; const limit = 10; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/+layout.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/+layout.ts index 2b299e830..c136e06d7 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/+layout.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/+layout.ts @@ -7,8 +7,8 @@ import type { Columns } from '../store'; import { buildWildcardColumnsQuery } from './columns/store'; export const load: LayoutLoad = async ({ params, parent, depends }) => { - depends(Dependencies.ROW); const { table } = await parent(); + depends(Dependencies.ROW); const row = await sdk .forProject(params.region, params.project) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/columns/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/columns/store.ts index 454e2b0cb..7d92c8e22 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/columns/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/columns/store.ts @@ -1,5 +1,5 @@ -import { type Models, Query } from '@appwrite.io/console'; import type { Columns } from '../../store'; +import { type Models, Query } from '@appwrite.io/console'; export function isRelationshipToMany(column: Models.ColumnRelationship) { if (!column) return false; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/delete.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/delete.svelte index 5d1cf7892..5121b3af1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/delete.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/row-[row]/delete.svelte @@ -45,17 +45,17 @@ 'restrict' = 'Row cannot be deleted' } - $: relColumns = $columns?.filter( - (attribute) => - isRelationship(attribute) && + $: relatedColumns = $columns?.filter( + (column) => + isRelationship(column) && // One-to-One are always included - (attribute.relationType === 'oneToOne' || + (column.relationType === 'oneToOne' || // One-to-Many: Only if parent is deleted - (attribute.relationType === 'oneToMany' && attribute.side === 'parent') || + (column.relationType === 'oneToMany' && column.side === 'parent') || // Many-to-One: Only include if child is deleted - (attribute.relationType === 'manyToOne' && attribute.side === 'child') || + (column.relationType === 'manyToOne' && column.side === 'child') || // Many-to-Many: Only include if the parent is being deleted - (isRelationshipToMany(attribute) && attribute.side === 'parent')) + (isRelationshipToMany(column) && column.side === 'parent')) ) as Models.ColumnRelationship[]; @@ -64,7 +64,7 @@ Are you sure you want to delete the row from {$table.name}?

- {#if relColumns?.length} + {#if relatedColumns?.length}

This row contains the following relationships:

Setting - {#each relColumns as attr} + {#each relatedColumns as column} - {#if attr.twoWay} + {#if column.twoWay} {:else} {/if} - {attr.key} + {column.key} - {attr.onDelete} + {column.onDelete} - {Deletion[attr.onDelete]} + {Deletion[column.onDelete]} {/each} @@ -109,6 +109,6 @@ - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/settings/displayName.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/settings/displayName.svelte index 81c643c6d..ce22763a8 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/settings/displayName.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/settings/displayName.svelte @@ -64,7 +64,7 @@ })); } - const addAttributeDisabled = $derived( + const addColumnDisabled = $derived( names?.length >= 5 || (names?.length && !names[names?.length - 1]) ); @@ -117,12 +117,12 @@ {/each} {/if} - + {#if !hasExhaustedOptions}
+ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts index 4b80c67a9..fc37bcb9c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts @@ -1,7 +1,7 @@ import { page } from '$app/stores'; -import { derived, writable } from 'svelte/store'; +import type { Column } from '$lib/helpers/types'; import type { Models } from '@appwrite.io/console'; -import type { Column as TableColumn } from '$lib/helpers/types'; +import { derived, writable } from 'svelte/store'; export type Columns = | Models.ColumnBoolean @@ -20,8 +20,8 @@ type Table = Omit & { export const table = derived(page, ($page) => $page.data.table as Table); export const columns = derived(page, ($page) => $page.data.table.columns as Columns[]); -export const indexes = derived(page, ($page) => $page.data.table.indexes as Models.ColumnIndex[]); +export const indexes = derived(page, ($page) => $page.data.table.indexes as Models.Index[]); -export const tableColumns = writable([]); +export const tableColumns = writable([]); export const isCsvImportInProgress = writable(false); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/subNavigation.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/subNavigation.svelte index 2004e7dc8..b8b21a21d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/subNavigation.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/subNavigation.svelte @@ -24,9 +24,7 @@ data?.allTables?.tables?.slice().sort((a, b) => a.name.localeCompare(b.name)) ); - const selectedTable = $derived.by(() => - sortedTables?.find((collection) => collection.$id === tableId) - ); + const selectedTable = $derived.by(() => sortedTables?.find((table) => table.$id === tableId)); let openBottomSheet = $state(false); @@ -111,11 +109,11 @@ bind:isOpen={openBottomSheet} menu={{ top: { - items: sortedTables.slice(0, 10).map((collection) => { + items: sortedTables.slice(0, 10).map((table) => { return { - name: collection.name, + name: table.name, leadingIcon: IconTable, - href: `${base}/project-${region}-${project}/databases/database-${databaseId}/table-${collection.$id}` + href: `${base}/project-${region}-${project}/databases/database-${databaseId}/table-${table.$id}` }; }) }, diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/table.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/table.svelte index ec4573bda..445dfdd9c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/table.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/table.svelte @@ -37,7 +37,7 @@ let displayNames = {}; let showRelationships = false; let selectedRelationship: Models.ColumnRelationship = null; - let relationshipData: Partial[]; + let relationshipData: Partial[]; onMount(async () => { displayNames = preferences.getDisplayNames(); @@ -135,17 +135,17 @@ 'restrict' = 'Row cannot be deleted' } - $: relAttributes = $columns?.filter( - (attribute) => - isRelationship(attribute) && + $: relatedColumns = $columns?.filter( + (column) => + isRelationship(column) && // One-to-One are always included - (attribute.relationType === 'oneToOne' || + (column.relationType === 'oneToOne' || // One-to-Many: Only if parent is deleted - (attribute.relationType === 'oneToMany' && attribute.side === 'parent') || + (column.relationType === 'oneToMany' && column.side === 'parent') || // Many-to-One: Only include if child is deleted - (attribute.relationType === 'manyToOne' && attribute.side === 'child') || + (column.relationType === 'manyToOne' && column.side === 'child') || // Many-to-Many: Only include if the parent is being deleted - (isRelationshipToMany(attribute) && attribute.side === 'parent')) + (isRelationshipToMany(column) && column.side === 'parent')) ) as Models.ColumnRelationship[]; let checked = false; @@ -233,14 +233,14 @@ {:else} {@const datetime = row[id]} {@const formatted = formatColumn(row[id])} - {@const isDatetimeAttribute = column.type === 'datetime'} - {@const isEncryptedAttribute = isString(column) && column.encrypt} - {#if isDatetimeAttribute} + {@const isDatetimeColumn = column.type === 'datetime'} + {@const isEncryptedColumn = isString(column) && column.encrypt} + {#if isDatetimeColumn} Timestamp {toLocaleDateTime(datetime, true)} - {:else if isEncryptedAttribute} + {:else if isEncryptedColumn}