Skip to content

Commit

Permalink
Change the file structure
Browse files Browse the repository at this point in the history
  • Loading branch information
codingkarthik committed Sep 12, 2024
1 parent 03d8ba1 commit 8a871f6
Show file tree
Hide file tree
Showing 12 changed files with 1,657 additions and 1,448 deletions.
469 changes: 257 additions & 212 deletions src/cli/config.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/cli/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import { Command, Option } from "commander";
import * as updateCmd from "./update";
import { createConnector } from "../connector";
import { createConnector } from "../connector/connector";
import { version } from "../../package.json"
import * as sdk from "@hasura/ndc-sdk-typescript";

Expand Down
105 changes: 0 additions & 105 deletions src/connector.ts

This file was deleted.

121 changes: 121 additions & 0 deletions src/connector/connector.ts
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.
4 changes: 2 additions & 2 deletions src/execution.ts → src/connector/execution.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import * as sdk from "@hasura/ndc-sdk-typescript";
import * as schema from "./schema";
import * as sql from "./sqlGeneration";
import * as sql from "./sql/sqlGeneration";
import { Database } from "@azure/cosmos";
import { runSQLQuery } from "./cosmosDb";
import { runSQLQuery } from "./db/cosmosDb";


function validateOrderBy(orderBy: sdk.OrderBy, collectionObjectType: schema.ObjectTypeDefinition) {
Expand Down
Loading

0 comments on commit 8a871f6

Please sign in to comment.