chore: introduced string to json from user-settings and moved types

This commit is contained in:
ankitsridhar16
2023-01-19 16:24:31 +05:30
parent 669f8b0431
commit f6f4547af3
3 changed files with 29 additions and 12 deletions

View File

@@ -1,18 +1,11 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { PubSubService } from './pubsub/pubsub.service'; import { PubSubService } from './pubsub/pubsub.service';
import { PrimitiveTypes } from './types/primitive-types'; import { PrimitiveTypes } from './types/primitive-types';
import { ModuleTypes } from './types/module-types'; import { CustomModuleTypes } from './types/custom-module-types';
import { SubscriptionType } from './types/subscription-types';
// Custom generic type to indicate the type of module // Custom generic type to indicate the type of module
type ModuleType = PrimitiveTypes | ModuleTypes; type ModuleType = PrimitiveTypes | CustomModuleTypes;
// Contains constants for the subscription types we use in Subscription Handler
enum SubscriptionType {
Created = 'created',
Updated = 'updated',
Deleted = 'deleted',
DeleteMany = 'delete_many',
}
@Injectable() @Injectable()
export class SubscriptionHandler { export class SubscriptionHandler {
@@ -20,8 +13,8 @@ export class SubscriptionHandler {
/** /**
* Publishes a subscription using the pubsub module * Publishes a subscription using the pubsub module
* @param topic a string containing the module name, an uid and the type of subscription * @param topic a string containing the "module_name/identifier"
* @param subscriptionType type of subscription being called * @param subscriptionType type of subscription being published
* @param moduleType type of the module model being called * @param moduleType type of the module model being called
* @returns a promise of type void * @returns a promise of type void
*/ */

View File

@@ -0,0 +1,7 @@
// Contains constants for the subscription types we use in Subscription Handler
export enum SubscriptionType {
Created = 'created',
Updated = 'updated',
Deleted = 'deleted',
DeleteMany = 'delete_many',
}

View File

@@ -4,8 +4,10 @@ import { pipe } from 'fp-ts/lib/function';
import * as O from 'fp-ts/Option'; import * as O from 'fp-ts/Option';
import * as TE from 'fp-ts/TaskEither'; import * as TE from 'fp-ts/TaskEither';
import * as T from 'fp-ts/Task'; import * as T from 'fp-ts/Task';
import * as E from 'fp-ts/Either';
import { User } from './user/user.model'; import { User } from './user/user.model';
import * as A from 'fp-ts/Array'; import * as A from 'fp-ts/Array';
import { JSON_INVALID } from './errors';
/** /**
* A workaround to throw an exception in an expression. * A workaround to throw an exception in an expression.
@@ -108,3 +110,18 @@ export const taskEitherValidateArraySeq = <A, B>(
TE.getApplicativeTaskValidation(T.ApplicativeSeq, A.getMonoid<A>()), TE.getApplicativeTaskValidation(T.ApplicativeSeq, A.getMonoid<A>()),
), ),
); );
/**
* String to JSON parser
* @param {str} str The string to parse
* @returns {E.Right<T> | E.Left<"json_invalid">} An Either of the parsed JSON
*/
export function stringToJson<T>(
str: string,
): E.Right<T | any> | E.Left<string> {
try {
return E.right(JSON.parse(str));
} catch (err) {
return E.left(JSON_INVALID);
}
}