Skip to content

Commit 0c38cda

Browse files
feat: add bigint column type support and update dependencies
1 parent 767a0f6 commit 0c38cda

8 files changed

Lines changed: 146 additions & 32 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
},
2121
"dependencies": {
2222
"@ai-sdk/svelte": "^1.1.24",
23-
"@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@d223f36",
23+
"@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@863d3e9",
2424
"@appwrite.io/pink-icons": "0.25.0",
2525
"@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3",
2626
"@appwrite.io/pink-legacy": "^1.0.3",

pnpm-lock.yaml

Lines changed: 11 additions & 30 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/lib/helpers/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const columnTypes = [
3434
'text',
3535
'mediumtext',
3636
'longtext',
37+
'bigint',
3738
'integer',
3839
'double',
3940
'boolean',

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@
198198
) {
199199
const stringColumn = column as Models.ColumnString;
200200
return { display: `Size: ${stringColumn.size}` };
201-
} else if (column.type === 'integer' || column.type === 'double') {
201+
} else if (column.type === 'bigint' || column.type === 'integer' || column.type === 'double') {
202202
const numbersColumn = column as Models.ColumnInteger | Models.ColumnFloat;
203203
const { min, max } = numbersColumn;
204204
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
<script context="module" lang="ts">
2+
import { page } from '$app/state';
3+
import { sdk } from '$lib/stores/sdk';
4+
import type { Models } from '@appwrite.io/console';
5+
6+
export async function submitBigInt(
7+
databaseId: string,
8+
tableId: string,
9+
key: string,
10+
data: Partial<Models.ColumnInteger>
11+
) {
12+
await sdk.forProject(page.params.region, page.params.project).tablesDB.createBigIntColumn({
13+
databaseId,
14+
tableId,
15+
key,
16+
required: data.required,
17+
min: data.min,
18+
max: data.max,
19+
xdefault: data.default,
20+
array: data.array
21+
});
22+
}
23+
24+
export async function updateBigInt(
25+
databaseId: string,
26+
tableId: string,
27+
data: Partial<Models.ColumnInteger>,
28+
originalKey?: string
29+
) {
30+
await sdk.forProject(page.params.region, page.params.project).tablesDB.updateBigIntColumn({
31+
databaseId,
32+
tableId,
33+
key: originalKey,
34+
required: data.required,
35+
xdefault: data.default,
36+
min: data.min,
37+
max: data.max,
38+
newKey: data.key !== originalKey ? data.key : undefined
39+
});
40+
}
41+
</script>
42+
43+
<script lang="ts">
44+
import { Layout } from '@appwrite.io/pink-svelte';
45+
import { InputNumber } from '$lib/elements/forms';
46+
import { createConservative } from '$lib/helpers/stores';
47+
import RequiredArrayCheckboxes from './requiredArrayCheckboxes.svelte';
48+
49+
export let editing = false;
50+
export let disabled = false;
51+
export let data: Partial<Models.ColumnInteger> = {
52+
required: false,
53+
min: 0,
54+
max: 0,
55+
default: 0,
56+
array: false
57+
};
58+
59+
let savedDefault = data.default;
60+
61+
function handleDefaultState(hideDefault: boolean) {
62+
if (hideDefault) {
63+
savedDefault = data.default;
64+
data.default = null;
65+
} else {
66+
data.default = savedDefault;
67+
}
68+
}
69+
70+
const {
71+
stores: { required, array },
72+
listen
73+
} = createConservative<Partial<Models.ColumnInteger>>({
74+
required: false,
75+
array: false,
76+
...data
77+
});
78+
$: listen(data);
79+
80+
$: handleDefaultState($required || $array);
81+
</script>
82+
83+
<Layout.Stack direction="row" gap="s">
84+
<InputNumber
85+
id="min"
86+
label="Min"
87+
{disabled}
88+
placeholder="Enter size"
89+
bind:value={data.min}
90+
required={editing} />
91+
92+
<InputNumber
93+
id="max"
94+
label="Max"
95+
{disabled}
96+
placeholder="Enter size"
97+
bind:value={data.max}
98+
required={editing} />
99+
</Layout.Stack>
100+
101+
<InputNumber
102+
id="default"
103+
label="Default value"
104+
placeholder="Enter value"
105+
min={data.min}
106+
max={data.max}
107+
bind:value={data.default}
108+
disabled={data.required || data.array || disabled}
109+
nullable={(!data.required && !data.array) || disabled} />
110+
111+
<RequiredArrayCheckboxes
112+
{editing}
113+
{disabled}
114+
bind:array={data.array}
115+
bind:required={data.required} />

src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/store.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Boolean, { submitBoolean, updateBoolean } from './boolean.svelte';
44
import Email, { submitEmail, updateEmail } from './email.svelte';
55
import Enum, { submitEnum, updateEnum } from './enum.svelte';
66
import Float, { submitFloat, updateFloat } from './float.svelte';
7+
import BigInt, { submitBigInt, updateBigInt } from './bigint.svelte';
78
import Integer, { submitInteger, updateInteger } from './integer.svelte';
89
import Ip, { submitIp, updateIp } from './ip.svelte';
910
import String, { submitString, updateString } from './string.svelte';
@@ -41,6 +42,7 @@ export type Option = {
4142
| 'Mediumtext'
4243
| 'Longtext'
4344
| 'Varchar'
45+
| 'BigInt'
4446
| 'Integer'
4547
| 'Float'
4648
| 'Boolean'
@@ -62,6 +64,7 @@ export type Option = {
6264
| 'mediumtext'
6365
| 'longtext'
6466
| 'varchar'
67+
| 'bigint'
6568
| 'integer'
6669
| 'double'
6770
| 'boolean'
@@ -125,6 +128,15 @@ export const columnOptions: Option[] = [
125128
update: updateVarchar,
126129
icon: IconText
127130
},
131+
{
132+
name: 'BigInt',
133+
sentenceName: 'bigint',
134+
component: BigInt,
135+
type: 'bigint',
136+
create: submitBigInt,
137+
update: updateBigInt,
138+
icon: IconHashtag
139+
},
128140
{
129141
name: 'Integer',
130142
sentenceName: 'integer',

0 commit comments

Comments
 (0)