Skip to content

Commit

Permalink
fix(database): validate extension fields & customEndpoint export outp…
Browse files Browse the repository at this point in the history
…ut (#571)
  • Loading branch information
ChrisPdgn committed Mar 24, 2023
1 parent 641bcb6 commit 2438f33
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 20 deletions.
2 changes: 1 addition & 1 deletion modules/database/src/adapters/DatabaseAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export abstract class DatabaseAdapter<T extends Schema> {
protected readonly maxConnTimeoutMs: number;
protected grpcSdk: ConduitGrpcSdk;
private legacyDeployment = false; // unprefixed declared schema collection
registeredSchemas: Map<string, ConduitSchema>;
registeredSchemas: Map<string, ConduitDatabaseSchema>;
models: { [name: string]: T } = {};
foreignSchemaCollections: Set<string> = new Set([]); // not in DeclaredSchemas
private readonly _systemSchemas: Set<string> = new Set();
Expand Down
2 changes: 1 addition & 1 deletion modules/database/src/adapters/mongoose-adapter/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ export class MongooseAdapter extends DatabaseAdapter<MongooseSchema> {
}

protected async _createSchemaFromAdapter(
schema: ConduitSchema,
schema: ConduitDatabaseSchema,
saveToDb: boolean = true,
): Promise<MongooseSchema> {
let compiledSchema = JSON.parse(JSON.stringify(schema));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { DataTypes, ModelStatic, Sequelize, Transaction } from 'sequelize';
import { ConduitSchema, Indexable, sleep, UntypedArray } from '@conduitplatform/grpc-sdk';
import { Indexable, sleep, UntypedArray } from '@conduitplatform/grpc-sdk';
import { SequelizeSchema } from '../SequelizeSchema';
import { ConduitDatabaseSchema, ParsedQuery } from '../../../interfaces';
import { isNil } from 'lodash';
Expand Down Expand Up @@ -177,7 +177,7 @@ export function processPushOperations(

export function compileSchema(
schema: ConduitDatabaseSchema,
registeredSchemas: Map<string, ConduitSchema>,
registeredSchemas: Map<string, ConduitDatabaseSchema>,
sequelizeModels: Indexable,
): ConduitDatabaseSchema {
let compiledSchema = JSON.parse(JSON.stringify(schema));
Expand Down
14 changes: 8 additions & 6 deletions modules/database/src/adapters/utils/validateFieldChanges.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import { ConduitError, ConduitSchema, Indexable } from '@conduitplatform/grpc-sdk';
import { Fields } from '../../interfaces';
import { ConduitError, Indexable } from '@conduitplatform/grpc-sdk';
import { ConduitDatabaseSchema, Fields } from '../../interfaces';
import { isArray, isEqual, isNil, isString } from 'lodash';
import { DataTypes } from 'sequelize';

/*
* Validates base schema fields for type changes.
* Extension fields are ignored.
* Validates schema compiled fields for type changes.
*/
export function validateFieldChanges(oldSchema: ConduitSchema, newSchema: ConduitSchema) {
validateSchemaFields(oldSchema.fields, newSchema.fields);
export function validateFieldChanges(
oldSchema: ConduitDatabaseSchema,
newSchema: ConduitDatabaseSchema,
) {
validateSchemaFields(oldSchema.compiledFields, newSchema.compiledFields);
return newSchema;
}

Expand Down
12 changes: 4 additions & 8 deletions modules/database/src/adapters/utils/validateFieldConstraints.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
import {
ConduitError,
ConduitModel,
ConduitModelField,
ConduitSchema,
} from '@conduitplatform/grpc-sdk';
import { ConduitError, ConduitModel, ConduitModelField } from '@conduitplatform/grpc-sdk';
import { ConduitDatabaseSchema } from '../../interfaces';

/*
* Validates schema field constraints.
* 'unique' requires 'required'
*/
export function validateFieldConstraints(schema: ConduitSchema) {
fieldsValidator(schema.name, schema.fields);
export function validateFieldConstraints(schema: ConduitDatabaseSchema) {
fieldsValidator(schema.name, schema.compiledFields);
}

export function fieldsValidator(schemaName: string, schemaFields: ConduitModel) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export class CustomEndpointsAdmin {
) {}

async exportCustomEndpoints(): Promise<UnparsedRouterResponse> {
return await this.database
const endpoints = await this.database
.getSchemaModel('CustomEndpoints')
.model.findMany({})
.then(r =>
Expand All @@ -41,9 +41,10 @@ export class CustomEndpointsAdmin {
delete obj.createdAt;
delete obj.updatedAt;
delete obj.__v;
return { endpoints: obj };
return obj;
}),
);
return { endpoints: endpoints };
}

async importCustomEndpoints(
Expand Down

0 comments on commit 2438f33

Please sign in to comment.