-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
03d8ba1
commit 8a871f6
Showing
12 changed files
with
1,657 additions
and
1,448 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
import * as sdk from "@hasura/ndc-sdk-typescript"; | ||
import { CollectionsSchema, getNdcSchemaResponse } from "./schema"; | ||
import { constructCosmosDbClient } from "./db/cosmosDb"; | ||
import { Database } from "@azure/cosmos"; | ||
import { executeQuery } from "./execution"; | ||
import { readFileSync } from "fs"; | ||
|
||
export type Configuration = ConnectorConfig; | ||
|
||
export type ConnectorConfig = { | ||
connection: { | ||
endpoint: string; | ||
key: string; | ||
databaseName: string; | ||
}; | ||
schema: CollectionsSchema; | ||
}; | ||
|
||
export type State = { | ||
databaseClient: Database; | ||
}; | ||
|
||
export function createConnector(): sdk.Connector<Configuration, State> { | ||
const connector: sdk.Connector<Configuration, State> = { | ||
parseConfiguration: async function ( | ||
configurationDir: string, | ||
): Promise<Configuration> { | ||
try { | ||
const configLocation = `${configurationDir}/config.json`; | ||
const fileContent = readFileSync(configLocation, "utf8"); | ||
const configObject: ConnectorConfig = JSON.parse(fileContent); | ||
return Promise.resolve(configObject); | ||
} catch (error) { | ||
console.error("Failed to parse configuration:", error); | ||
throw new sdk.InternalServerError( | ||
"Internal Server Error, server configuration is invalid", | ||
{}, | ||
); | ||
} | ||
}, | ||
|
||
tryInitState: async function ( | ||
_: Configuration, | ||
__: unknown, | ||
): Promise<State> { | ||
try { | ||
const databaseClient = constructCosmosDbClient().dbClient; | ||
return Promise.resolve({ | ||
databaseClient, | ||
}); | ||
} catch (error) { | ||
console.error("Failed to initialize the state of the connector", error); | ||
throw new sdk.InternalServerError( | ||
`Internal server error, failed to initialize the state of the connector - ${error}`, | ||
{}, | ||
); | ||
} | ||
}, | ||
|
||
getSchema: async function ( | ||
configuration: Configuration, | ||
): Promise<sdk.SchemaResponse> { | ||
if (!configuration.schema) { | ||
throw new sdk.Forbidden( | ||
"Internal server error, server configuration not found", | ||
); | ||
} | ||
return Promise.resolve(getNdcSchemaResponse(configuration.schema)); | ||
}, | ||
|
||
getCapabilities(_: Configuration): sdk.Capabilities { | ||
return { | ||
query: { | ||
nested_fields: {}, | ||
}, | ||
mutation: {}, | ||
}; | ||
}, | ||
|
||
query: async function ( | ||
configuration: Configuration, | ||
state: State, | ||
request: sdk.QueryRequest, | ||
): Promise<sdk.QueryResponse> { | ||
return executeQuery(request, configuration.schema, state.databaseClient); | ||
}, | ||
|
||
mutation: async function ( | ||
configuration: Configuration, | ||
state: State, | ||
request: sdk.MutationRequest, | ||
): Promise<sdk.MutationResponse> { | ||
throw new Error("Not implemented"); | ||
}, | ||
|
||
queryExplain: function ( | ||
configuration: Configuration, | ||
state: State, | ||
request: sdk.QueryRequest, | ||
): Promise<sdk.ExplainResponse> { | ||
throw new Error("Function not implemented."); | ||
}, | ||
|
||
mutationExplain: function ( | ||
configuration: Configuration, | ||
state: State, | ||
request: sdk.MutationRequest, | ||
): Promise<sdk.ExplainResponse> { | ||
throw new Error("Function not implemented."); | ||
}, | ||
|
||
fetchMetrics: async function ( | ||
configuration: Configuration, | ||
state: State, | ||
): Promise<undefined> { | ||
return undefined; | ||
}, | ||
}; | ||
|
||
return connector; | ||
} |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.