From 0119b0444193b42d9300912761541cf80d6ead93 Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Thu, 27 Jul 2023 11:07:00 -0600 Subject: [PATCH 1/4] Small fixes for new multinet table/network upload architecture --- src/axios.ts | 12 +++++++----- src/index.ts | 27 ++++----------------------- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/src/axios.ts b/src/axios.ts index 0cebd33..76627a8 100644 --- a/src/axios.ts +++ b/src/axios.ts @@ -21,6 +21,7 @@ import { WorkspacePermissionsSpec, Workspace, AQLQuerySpec, + ColumnType, } from './index'; function fileToText(file: File): Promise { @@ -61,7 +62,7 @@ export interface MultinetAxiosInstance extends AxiosInstance { uploadTable(workspace: string, table: string, options: TableUploadOptionsSpec, config?: AxiosRequestConfig): AxiosPromise>; deleteTable(workspace: string, table: string): AxiosPromise; columnTypes(workspace: string, table: string): AxiosPromise; - uploadNetwork(workspace: string, network: string, options: NetworkUploadOptionsSpec, config?: AxiosRequestConfig): AxiosPromise>; + uploadNetwork(workspace: string, network: string, data: File, node_columns: Record, edge_columns: Record, config?: AxiosRequestConfig): AxiosPromise>; createNetwork(workspace: string, network: string, options: CreateNetworkOptionsSpec): AxiosPromise; deleteNetwork(workspace: string, network: string): AxiosPromise; aql(workspace: string, payload: AQLQuerySpec): AxiosPromise; @@ -177,7 +178,7 @@ export function multinetAxiosInstance(config: AxiosRequestConfig): MultinetAxios } // else if json - return this.post(`workspaces/${workspace}/uploads/json/`, { + return this.post(`workspaces/${workspace}/uploads/json_table/`, { field_value: fieldValue.value, edge: edgeTable, table_name: table, @@ -193,8 +194,7 @@ export function multinetAxiosInstance(config: AxiosRequestConfig): MultinetAxios return this.get(`workspaces/${workspace}/tables/${table}/annotations/`); }; - Proto.uploadNetwork = async function(workspace: string, network: string, options: NetworkUploadOptionsSpec): Promise>> { - const { type, data } = options; + Proto.uploadNetwork = async function(workspace: string, network: string, data: File, node_columns: Record, edge_columns: Record): Promise>> { const s3ffClient = new S3FileFieldClient({ baseUrl: `${this.defaults.baseURL}/s3-upload/`, apiConfig: this.defaults, @@ -202,9 +202,11 @@ export function multinetAxiosInstance(config: AxiosRequestConfig): MultinetAxios const fieldValue = await s3ffClient.uploadFile(data, 'api.Upload.blob'); - return this.post(`workspaces/${workspace}/uploads/${type}/`, { + return this.post(`workspaces/${workspace}/uploads/json_network/`, { field_value: fieldValue.value, network_name: network, + node_columns, + edge_columns }); }; diff --git a/src/index.ts b/src/index.ts index c952b49..0ba3311 100644 --- a/src/index.ts +++ b/src/index.ts @@ -82,22 +82,6 @@ export interface Workspace { export type TableType = 'all' | 'node' | 'edge'; -export type TableUploadType = 'csv'; -export type NetworkUploadType = 'nested_json' | 'newick' | 'd3_json'; -export type UploadType = TableUploadType | NetworkUploadType; - -export function validTableUploadType(type: string): type is TableUploadType { - return type === 'csv'; -} - -export function validNetworkUploadType(type: string): type is NetworkUploadType { - return ['nested_json', 'newick', 'd3_json'].includes(type); -} - -export function validUploadType(type: string): type is UploadType { - return validTableUploadType(type) || validNetworkUploadType(type); -} - export type Direction = 'all' | 'incoming' | 'outgoing'; export interface TablesOptionsSpec { @@ -113,7 +97,7 @@ export type EdgesOptionsSpec = OffsetLimitSpec & { direction?: Direction; }; -export type ColumnType = 'number' | 'label' | 'category' | 'date' | 'boolean'; +export type ColumnType = 'primary key' | 'edge source' | 'edge target' | 'label' | 'boolean' | 'category' | 'number' | 'date'; export interface ColumnTypes { [key: string]: ColumnType; @@ -122,9 +106,7 @@ export interface ColumnTypes { export interface TableUploadOptionsSpec { data: File; edgeTable: boolean; - columnTypes?: { - [key: string]: ColumnType; - }; + columnTypes?: Record; fileType: 'json' | 'csv'; delimiter?: string; quoteChar?: string; @@ -132,7 +114,6 @@ export interface TableUploadOptionsSpec { export interface NetworkUploadOptionsSpec { data: File; - type: NetworkUploadType; } export interface CreateNetworkOptionsSpec { @@ -247,8 +228,8 @@ class MultinetAPI { return types; } - public async uploadNetwork(workspace: string, network: string, options: NetworkUploadOptionsSpec): Promise> { - return (await this.axios.uploadNetwork(workspace, network, options)).data; + public async uploadNetwork(workspace: string, network: string, data: File, node_columns: Record, edge_columns: Record): Promise> { + return (await this.axios.uploadNetwork(workspace, network, data, node_columns, edge_columns)).data; } public async createNetwork(workspace: string, network: string, options: CreateNetworkOptionsSpec): Promise { From a5600d7259370f1084b2460c4f4317250a7641c9 Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Fri, 28 Jul 2023 11:22:20 -0600 Subject: [PATCH 2/4] Fix variable naming --- src/axios.ts | 8 ++++---- src/index.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/axios.ts b/src/axios.ts index 76627a8..148b3b6 100644 --- a/src/axios.ts +++ b/src/axios.ts @@ -62,7 +62,7 @@ export interface MultinetAxiosInstance extends AxiosInstance { uploadTable(workspace: string, table: string, options: TableUploadOptionsSpec, config?: AxiosRequestConfig): AxiosPromise>; deleteTable(workspace: string, table: string): AxiosPromise; columnTypes(workspace: string, table: string): AxiosPromise; - uploadNetwork(workspace: string, network: string, data: File, node_columns: Record, edge_columns: Record, config?: AxiosRequestConfig): AxiosPromise>; + uploadNetwork(workspace: string, network: string, data: File, nodeColumns: Record, edgeColumns: Record, config?: AxiosRequestConfig): AxiosPromise>; createNetwork(workspace: string, network: string, options: CreateNetworkOptionsSpec): AxiosPromise; deleteNetwork(workspace: string, network: string): AxiosPromise; aql(workspace: string, payload: AQLQuerySpec): AxiosPromise; @@ -194,7 +194,7 @@ export function multinetAxiosInstance(config: AxiosRequestConfig): MultinetAxios return this.get(`workspaces/${workspace}/tables/${table}/annotations/`); }; - Proto.uploadNetwork = async function(workspace: string, network: string, data: File, node_columns: Record, edge_columns: Record): Promise>> { + Proto.uploadNetwork = async function(workspace: string, network: string, data: File, nodeColumns: Record, edgeColumns: Record): Promise>> { const s3ffClient = new S3FileFieldClient({ baseUrl: `${this.defaults.baseURL}/s3-upload/`, apiConfig: this.defaults, @@ -205,8 +205,8 @@ export function multinetAxiosInstance(config: AxiosRequestConfig): MultinetAxios return this.post(`workspaces/${workspace}/uploads/json_network/`, { field_value: fieldValue.value, network_name: network, - node_columns, - edge_columns + node_columns: nodeColumns, + edge_columns: edgeColumns, }); }; diff --git a/src/index.ts b/src/index.ts index 0ba3311..93de2e0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -228,8 +228,8 @@ class MultinetAPI { return types; } - public async uploadNetwork(workspace: string, network: string, data: File, node_columns: Record, edge_columns: Record): Promise> { - return (await this.axios.uploadNetwork(workspace, network, data, node_columns, edge_columns)).data; + public async uploadNetwork(workspace: string, network: string, data: File, nodeColumns: Record, edgeColumns: Record): Promise> { + return (await this.axios.uploadNetwork(workspace, network, data, nodeColumns, edgeColumns)).data; } public async createNetwork(workspace: string, network: string, options: CreateNetworkOptionsSpec): Promise { From 2afc98c95f0d3aa756cf0d095101c591d0263861 Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Wed, 2 Aug 2023 12:26:43 -0600 Subject: [PATCH 3/4] Add string as an column type --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 18c2d38..7de8af7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -97,7 +97,7 @@ export type EdgesOptionsSpec = OffsetLimitSpec & { direction?: Direction; }; -export type ColumnType = 'primary key' | 'edge source' | 'edge target' | 'label' | 'boolean' | 'category' | 'number' | 'date'; +export type ColumnType = 'primary key' | 'edge source' | 'edge target' | 'label' | 'string' | 'boolean' | 'category' | 'number' | 'date'; export interface ColumnTypes { [key: string]: ColumnType; From 341aa70377b784be15ea01fed08549ee5c38bace Mon Sep 17 00:00:00 2001 From: Jack Wilburn Date: Fri, 4 Aug 2023 10:14:33 -0600 Subject: [PATCH 4/4] Add ignored as a column option --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 7de8af7..f6dc7c2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -97,7 +97,7 @@ export type EdgesOptionsSpec = OffsetLimitSpec & { direction?: Direction; }; -export type ColumnType = 'primary key' | 'edge source' | 'edge target' | 'label' | 'string' | 'boolean' | 'category' | 'number' | 'date'; +export type ColumnType = 'primary key' | 'edge source' | 'edge target' | 'label' | 'string' | 'boolean' | 'category' | 'number' | 'date' | 'ignored'; export interface ColumnTypes { [key: string]: ColumnType;