mirror of
https://github.com/appwrite/console.git
synced 2026-06-06 19:27:48 +00:00
fix: supabase & nhost formdata
This commit is contained in:
@@ -83,3 +83,8 @@ export function excludeArray<T, E extends T>(
|
||||
): Exclude<T, E>[] {
|
||||
return array.filter((item) => !exclude.includes(item as E)) as Exclude<T, E>[];
|
||||
}
|
||||
|
||||
// Function that, given an array, checks if it includes all the elements of another array
|
||||
export function includesAll<T>(arr1: T[], arr2: T[]): boolean {
|
||||
return arr2.every((elem) => arr1.includes(elem));
|
||||
}
|
||||
|
||||
@@ -37,15 +37,23 @@ export function deepEqual<T>(obj1: T, obj2: T): boolean {
|
||||
return true;
|
||||
}
|
||||
|
||||
export function deepMap<T extends object, U extends object = T>(
|
||||
obj: T,
|
||||
fn: (value: unknown, key: unknown, obj: T) => unknown
|
||||
export type DeepObj<T> = {
|
||||
[K in keyof T]: T[K] extends object ? DeepObj<T[K]> : T[K];
|
||||
};
|
||||
export function deepMap<T, U>(
|
||||
obj: DeepObj<T>,
|
||||
fn: (value: T, key: string, parentKey?: string) => unknown,
|
||||
parentKey?: string
|
||||
): U {
|
||||
const entries = objectEntries(obj);
|
||||
const result = {} as U;
|
||||
|
||||
for (const [key, value] of entries) {
|
||||
result[key] = typeof value === 'object' ? deepMap(value, fn) : fn(value, key, obj);
|
||||
if (typeof value === 'object' && value !== null) {
|
||||
result[key as any] = deepMap(value as any, fn, key as string) as any;
|
||||
} else {
|
||||
result[key as any] = fn(value as any, key as any, parentKey);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
+61
-24
@@ -1,5 +1,24 @@
|
||||
import { writable } from 'svelte/store';
|
||||
|
||||
import {
|
||||
PUBLIC_MOCK_APIKEY,
|
||||
PUBLIC_MOCK_ENDPOINT,
|
||||
PUBLIC_MOCK_PROJECTID,
|
||||
PUBLIC_NHOST_TEST_DATABASE,
|
||||
PUBLIC_NHOST_TEST_PASSWORD,
|
||||
PUBLIC_NHOST_TEST_REGION,
|
||||
PUBLIC_NHOST_TEST_SECRET,
|
||||
PUBLIC_NHOST_TEST_SUBDOMAIN,
|
||||
PUBLIC_NHOST_TEST_USERNAME,
|
||||
PUBLIC_SUPABASE_TEST_ENDPOINT,
|
||||
PUBLIC_SUPABASE_TEST_HOST,
|
||||
PUBLIC_SUPABASE_TEST_KEY,
|
||||
PUBLIC_SUPABASE_TEST_PASSWORD,
|
||||
PUBLIC_SUPABASE_TEST_PORT,
|
||||
PUBLIC_SUPABASE_TEST_USERNAME
|
||||
} from '$env/static/public';
|
||||
import { includesAll } from '$lib/helpers/array';
|
||||
|
||||
const initialFormData = {
|
||||
users: {
|
||||
root: false,
|
||||
@@ -101,17 +120,35 @@ export const migrationFormToResources = (formData: MigrationFormData): Resource[
|
||||
return resources;
|
||||
};
|
||||
|
||||
import {
|
||||
PUBLIC_MOCK_APIKEY,
|
||||
PUBLIC_MOCK_ENDPOINT,
|
||||
PUBLIC_MOCK_PROJECTID,
|
||||
PUBLIC_NHOST_TEST_DATABASE,
|
||||
PUBLIC_NHOST_TEST_PASSWORD,
|
||||
PUBLIC_NHOST_TEST_REGION,
|
||||
PUBLIC_NHOST_TEST_SECRET,
|
||||
PUBLIC_NHOST_TEST_SUBDOMAIN,
|
||||
PUBLIC_NHOST_TEST_USERNAME
|
||||
} from '$env/static/public';
|
||||
export const resourcesToMigrationForm = (resources: Resource[]): MigrationFormData => {
|
||||
const formData = { ...initialFormData };
|
||||
if (resources.includes('user')) {
|
||||
formData.users.root = true;
|
||||
}
|
||||
if (includesAll(resources, ['team', 'membership'])) {
|
||||
formData.users.teams = true;
|
||||
}
|
||||
if (resources.includes('database')) {
|
||||
formData.databases.root = true;
|
||||
}
|
||||
if (includesAll(resources, ['collection', 'attribute', 'index', 'document'])) {
|
||||
formData.databases.documents = true;
|
||||
}
|
||||
if (resources.includes('function')) {
|
||||
formData.functions.root = true;
|
||||
}
|
||||
if (resources.includes('envVar')) {
|
||||
formData.functions.env = true;
|
||||
}
|
||||
if (resources.includes('deployment')) {
|
||||
formData.functions.inactive = true;
|
||||
}
|
||||
if (includesAll(resources, ['bucket', 'file'])) {
|
||||
formData.storage.root = true;
|
||||
}
|
||||
|
||||
return formData;
|
||||
};
|
||||
|
||||
type AppwriteInput = {
|
||||
provider: 'appwrite';
|
||||
@@ -148,21 +185,21 @@ type NhostInput = {
|
||||
export type ProviderInput = AppwriteInput | NhostInput | SupabaseInput | FirebaseInput;
|
||||
export type Provider = ProviderInput['provider'];
|
||||
|
||||
const mockProvider: ProviderInput = {
|
||||
provider: 'appwrite',
|
||||
endpoint: PUBLIC_MOCK_ENDPOINT,
|
||||
apiKey: PUBLIC_MOCK_APIKEY,
|
||||
projectID: PUBLIC_MOCK_PROJECTID
|
||||
};
|
||||
// const mockProvider: ProviderInput = {
|
||||
// provider: 'supabase',
|
||||
// endpoint: PUBLIC_SUPABASE_TEST_ENDPOINT,
|
||||
// apiKey: PUBLIC_SUPABASE_TEST_KEY,
|
||||
// host: PUBLIC_SUPABASE_TEST_HOST,
|
||||
// port: Number(PUBLIC_SUPABASE_TEST_PORT),
|
||||
// username: PUBLIC_SUPABASE_TEST_USERNAME,
|
||||
// password: PUBLIC_SUPABASE_TEST_PASSWORD
|
||||
// provider: 'appwrite',
|
||||
// endpoint: PUBLIC_MOCK_ENDPOINT,
|
||||
// apiKey: PUBLIC_MOCK_APIKEY,
|
||||
// projectID: PUBLIC_MOCK_PROJECTID
|
||||
// };
|
||||
const mockProvider: ProviderInput = {
|
||||
provider: 'supabase',
|
||||
endpoint: PUBLIC_SUPABASE_TEST_ENDPOINT,
|
||||
apiKey: PUBLIC_SUPABASE_TEST_KEY,
|
||||
host: PUBLIC_SUPABASE_TEST_HOST,
|
||||
port: Number(PUBLIC_SUPABASE_TEST_PORT),
|
||||
username: PUBLIC_SUPABASE_TEST_USERNAME,
|
||||
password: PUBLIC_SUPABASE_TEST_PASSWORD
|
||||
};
|
||||
// const mockProvider: ProviderInput = {
|
||||
// provider: 'nhost',
|
||||
// subdomain: PUBLIC_NHOST_TEST_SUBDOMAIN,
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
import {
|
||||
createMigrationFormStore,
|
||||
createMigrationProviderStore,
|
||||
providerResources
|
||||
providerResources,
|
||||
resourcesToMigrationForm
|
||||
} from '$lib/stores/migration';
|
||||
import { wizard } from '$lib/stores/wizard';
|
||||
|
||||
@@ -61,12 +62,7 @@
|
||||
}
|
||||
|
||||
function selectAll() {
|
||||
$formData = deepMap($formData, (v) => {
|
||||
if (typeof v === 'boolean') {
|
||||
return true;
|
||||
}
|
||||
return v;
|
||||
});
|
||||
$formData = resourcesToMigrationForm(resources);
|
||||
}
|
||||
|
||||
let report: any;
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
const onFinish = async () => {
|
||||
const resources = migrationFormToResources($formData);
|
||||
console.log('resources', resources);
|
||||
return;
|
||||
switch ($provider.provider) {
|
||||
case 'appwrite': {
|
||||
const res = await sdk.forProject.migrations.migrateAppwrite(
|
||||
|
||||
Reference in New Issue
Block a user