diff --git a/package.json b/package.json index 1905197e2f..8e898a7249 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@de65a99", + "@appwrite.io/console": "github:appwrite/sdk-for-console#migration-resource-enum-fix", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@df765cc", "@appwrite.io/pink-legacy": "^1.0.3", diff --git a/src/lib/stores/migration.ts b/src/lib/stores/migration.ts index 534cddc6a9..52b0e6d875 100644 --- a/src/lib/stores/migration.ts +++ b/src/lib/stores/migration.ts @@ -1,7 +1,14 @@ import { writable } from 'svelte/store'; -import { Resources } from '@appwrite.io/console'; +import { + AppwriteMigrationResource, + FirebaseMigrationResource, + NHostMigrationResource, + SupabaseMigrationResource +} from '@appwrite.io/console'; import { includesAll } from '$lib/helpers/array'; +type MigrationResource = AppwriteMigrationResource | FirebaseMigrationResource | NHostMigrationResource | SupabaseMigrationResource; + const initialFormData = { users: { root: false, @@ -13,11 +20,14 @@ const initialFormData = { }, functions: { root: false, - env: false, inactive: false }, storage: { root: false + }, + sites: { + root: false, + inactive: false } }; @@ -48,69 +58,55 @@ export const ResourcesFriendly = { table: { singular: 'Table', plural: 'Tables' }, index: { singular: 'Index', plural: 'Indexes' }, column: { singular: 'Column', plural: 'Columns' }, - row: { singular: 'Row', plural: 'Rows' } + row: { singular: 'Row', plural: 'Rows' }, + site: { singular: 'Site', plural: 'Sites' }, + 'site-deployment': { singular: 'Site Deployment', plural: 'Site Deployments' }, + 'site-variable': { singular: 'Site Variable', plural: 'Site Variables' } }; -// @todo: @itznotabug - check if other resources are correct and work fine! -export const providerResources: Record = { - appwrite: Object.values(Resources), - supabase: [ - Resources.User, - Resources.Database, - Resources.Collection, - Resources.Attribute, - Resources.Index, - Resources.Document, - Resources.Bucket, - Resources.File - ], - nhost: [ - Resources.User, - Resources.Database, - Resources.Collection, - Resources.Attribute, - Resources.Index, - Resources.Document, - Resources.Bucket, - Resources.File - ], - firebase: [ - Resources.User, - Resources.Database, - Resources.Collection, - Resources.Attribute, - Resources.Document, - Resources.Bucket, - Resources.File - ] +export const providerResources: Record = { + appwrite: Object.values(AppwriteMigrationResource), + supabase: Object.values(SupabaseMigrationResource), + nhost: Object.values(NHostMigrationResource), + firebase: Object.values(FirebaseMigrationResource) }; export const migrationFormToResources = ( formData: MigrationFormData, provider: Provider -): Resources[] => { - const resources: Resources[] = []; - const addResource = (resource: Resources) => { +): MigrationResource[] => { + const resources: MigrationResource[] = []; + const addResource = (resource: MigrationResource) => { if (providerResources[provider].includes(resource)) { resources.push(resource); } }; if (formData.users.root) { - addResource(Resources.User); + addResource(AppwriteMigrationResource.User); } if (formData.databases.root) { - addResource(Resources.Database); - addResource(Resources.Table); - addResource(Resources.Column); - addResource(Resources.Index); + addResource(AppwriteMigrationResource.Database); + addResource(AppwriteMigrationResource.Table); + addResource(AppwriteMigrationResource.Column); + addResource(AppwriteMigrationResource.Index); } if (formData.databases.rows) { - addResource(Resources.Row); + addResource(AppwriteMigrationResource.Row); } if (formData.storage.root) { - addResource(Resources.Bucket); - addResource(Resources.File); + addResource(AppwriteMigrationResource.Bucket); + addResource(AppwriteMigrationResource.File); + } + if (formData.functions.root) { + addResource(AppwriteMigrationResource.Function); + addResource(AppwriteMigrationResource.Environmentvariable); + addResource(AppwriteMigrationResource.Deployment); + } + if (formData.sites.root) { + addResource(AppwriteMigrationResource.Site); + addResource(AppwriteMigrationResource.Sitevariable); + addResource(AppwriteMigrationResource.Sitedeployment); } return resources; @@ -137,20 +133,43 @@ export const isVersionAtLeast = (version: string, atLeast: string) => { return compareVersions(version, atLeast) >= 0; }; -export const resourcesToMigrationForm = (resources: Resources[]): MigrationFormData => { +export const resourcesToMigrationForm = (resources: MigrationResource[]): MigrationFormData => { const formData = { ...initialFormData }; - if (resources.includes(Resources.User)) { + if (resources.includes(AppwriteMigrationResource.User)) { formData.users.root = true; } - if (resources.includes(Resources.Database)) { + if (resources.includes(AppwriteMigrationResource.Database)) { formData.databases.root = true; } - if (includesAll(resources, [Resources.Table, Resources.Column, Resources.Row] as Resources[])) { + if ( + includesAll(resources, [ + AppwriteMigrationResource.Table, + AppwriteMigrationResource.Column, + AppwriteMigrationResource.Row + ] as MigrationResource[]) + ) { formData.databases.rows = true; } - if (includesAll(resources, [Resources.Bucket, Resources.File] as Resources[])) { + if ( + includesAll(resources, [ + AppwriteMigrationResource.Bucket, + AppwriteMigrationResource.File + ] as MigrationResource[]) + ) { formData.storage.root = true; } + if (resources.includes(AppwriteMigrationResource.Function)) { + formData.functions.root = true; + } + if (resources.includes(AppwriteMigrationResource.Deployment)) { + formData.functions.inactive = true; + } + if (resources.includes(AppwriteMigrationResource.Site)) { + formData.sites.root = true; + } + if (resources.includes(AppwriteMigrationResource.Sitedeployment)) { + formData.sites.inactive = true; + } return formData; }; diff --git a/src/routes/(console)/(migration-wizard)/resource-form.svelte b/src/routes/(console)/(migration-wizard)/resource-form.svelte index 54e3f23ba4..b3ced45945 100644 --- a/src/routes/(console)/(migration-wizard)/resource-form.svelte +++ b/src/routes/(console)/(migration-wizard)/resource-form.svelte @@ -11,7 +11,7 @@ } from '$lib/stores/migration'; import { Button } from '$lib/elements/forms'; import { wizard } from '$lib/stores/wizard'; - import { Resources, type Models } from '@appwrite.io/console'; + import { AppwriteMigrationResource, type Models } from '@appwrite.io/console'; import type { sdk } from '$lib/stores/sdk'; import ImportReport from '$routes/(console)/project-[region]-[project]/settings/migrations/(import)/importReport.svelte'; @@ -94,19 +94,24 @@ $: resources = providerResources[$provider.provider]; const shouldRenderGroup = (groupKey: string): boolean => { + if (groupKey === 'storage') { + return ( + resources.includes(AppwriteMigrationResource.Bucket) && + resources.includes(AppwriteMigrationResource.File) + ); + } + if (groupKey === 'functions') { - // Functions not in SDK Resources enum, skip - return false; + return resources.includes(AppwriteMigrationResource.Function); } - if (groupKey === 'storage') { - return resources.includes(Resources.Bucket) && resources.includes(Resources.File); + if (groupKey === 'sites') { + return resources.includes(AppwriteMigrationResource.Site); } - // Map groupKey to Resources enum - const groupToResource: Record = { - users: Resources.User, - databases: Resources.Database + const groupToResource: Record = { + users: AppwriteMigrationResource.User, + databases: AppwriteMigrationResource.Database }; const resource = groupToResource[groupKey]; return resource ? resources.includes(resource) : false; @@ -122,7 +127,8 @@ users: 'user', databases: 'database', functions: 'function', - storage: 'bucket' + storage: 'bucket', + sites: 'site' }; return map[groupKey] || groupKey; }; diff --git a/src/routes/(console)/project-[region]-[project]/settings/migrations/(import)/importReport.svelte b/src/routes/(console)/project-[region]-[project]/settings/migrations/(import)/importReport.svelte index 99e62c32f7..ea8c4361cb 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/migrations/(import)/importReport.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/migrations/(import)/importReport.svelte @@ -23,10 +23,13 @@ databases: { root: 'Databases', rows: 'Include rows' }, functions: { root: 'Functions', - env: 'Include environment variables', inactive: 'Include inactive deployments' }, - storage: { root: 'Storage' } + storage: { root: 'Storage' }, + sites: { + root: 'Sites', + inactive: 'Include inactive deployments' + } }; const descriptionMap = { @@ -40,7 +43,10 @@ }, functions: { root: 'Import all functions and their active deployment', - env: 'Import all environment variables', + inactive: 'Import all deployments that are not currently active' + }, + sites: { + root: 'Import all sites and their active deployment', inactive: 'Import all deployments that are not currently active' } }; diff --git a/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.ts b/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.ts index d93dbba358..fd1d938938 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.ts @@ -13,7 +13,8 @@ export async function load({ depends, params }) { Query.or([ Query.equal('destination', ['Appwrite', 'Firebase', 'NHost', 'Supabase']), Query.isNull('destination') - ]) + ]), + Query.orderDesc('$createdAt') ] }); diff --git a/src/routes/(console)/project-[region]-[project]/settings/migrations/details.svelte b/src/routes/(console)/project-[region]-[project]/settings/migrations/details.svelte index 9690345a67..5d89553075 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/migrations/details.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/migrations/details.svelte @@ -130,8 +130,8 @@
{total(Object.values(entityCounter)) > 1 - ? ResourcesFriendly[entity].plural - : ResourcesFriendly[entity].singular} + ? (ResourcesFriendly[entity]?.plural ?? entity) + : (ResourcesFriendly[entity]?.singular ?? entity)} {totalItems(entityCounter)}