mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
feat: use provider-specific migration resource enums from SDK
This commit is contained in:
+62
-57
@@ -1,7 +1,18 @@
|
||||
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,
|
||||
@@ -59,76 +70,53 @@ export const ResourcesFriendly = {
|
||||
'site-variable': { singular: 'Site Variable', plural: 'Site Variables' }
|
||||
};
|
||||
|
||||
// Site resources are not yet in the SDK's Resources enum; cast as Resources
|
||||
const siteResources = ['site', 'site-deployment', 'site-variable'] as Resources[];
|
||||
|
||||
// @todo: @itznotabug - check if other resources are correct and work fine!
|
||||
export const providerResources: Record<Provider, Resources[]> = {
|
||||
appwrite: [...Object.values(Resources), ...siteResources],
|
||||
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<Provider, MigrationResource[]> = {
|
||||
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);
|
||||
}
|
||||
if (formData.functions.inactive) {
|
||||
addResource(AppwriteMigrationResource.Deployment);
|
||||
}
|
||||
if (formData.sites.root) {
|
||||
addResource('site' as Resources);
|
||||
addResource('site-variable' as Resources);
|
||||
addResource(AppwriteMigrationResource.Site);
|
||||
addResource(AppwriteMigrationResource.Sitevariable);
|
||||
}
|
||||
if (formData.sites.inactive) {
|
||||
addResource('site-deployment' as Resources);
|
||||
addResource(AppwriteMigrationResource.Sitedeployment);
|
||||
}
|
||||
|
||||
return resources;
|
||||
@@ -155,24 +143,41 @@ 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('site' as Resources)) {
|
||||
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('site-deployment' as Resources)) {
|
||||
if (resources.includes(AppwriteMigrationResource.Sitedeployment)) {
|
||||
formData.sites.inactive = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -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,23 +94,24 @@
|
||||
$: resources = providerResources[$provider.provider];
|
||||
|
||||
const shouldRenderGroup = (groupKey: string): boolean => {
|
||||
if (groupKey === 'functions') {
|
||||
// Functions not in SDK Resources enum, skip
|
||||
return false;
|
||||
if (groupKey === 'storage') {
|
||||
return (
|
||||
resources.includes(AppwriteMigrationResource.Bucket) &&
|
||||
resources.includes(AppwriteMigrationResource.File)
|
||||
);
|
||||
}
|
||||
|
||||
if (groupKey === 'storage') {
|
||||
return resources.includes(Resources.Bucket) && resources.includes(Resources.File);
|
||||
if (groupKey === 'functions') {
|
||||
return resources.includes(AppwriteMigrationResource.Function);
|
||||
}
|
||||
|
||||
if (groupKey === 'sites') {
|
||||
return (resources as string[]).includes('site');
|
||||
return resources.includes(AppwriteMigrationResource.Site);
|
||||
}
|
||||
|
||||
// Map groupKey to Resources enum
|
||||
const groupToResource: Record<string, Resources> = {
|
||||
users: Resources.User,
|
||||
databases: Resources.Database
|
||||
const groupToResource: Record<string, string> = {
|
||||
users: AppwriteMigrationResource.User,
|
||||
databases: AppwriteMigrationResource.Database
|
||||
};
|
||||
const resource = groupToResource[groupKey];
|
||||
return resource ? resources.includes(resource) : false;
|
||||
|
||||
Reference in New Issue
Block a user