Reorganize frontend and install Craco to alias modules (#190)
This commit is contained in:
@ -0,0 +1,73 @@
|
||||
import {
|
||||
GraphqlMutationUser,
|
||||
GraphqlQueryUser,
|
||||
mapToGqlUser,
|
||||
mapToUser,
|
||||
User,
|
||||
} from '../user.interface';
|
||||
|
||||
describe('User mappers', () => {
|
||||
it('should map GraphqlUser to User', () => {
|
||||
const now = new Date();
|
||||
now.setMilliseconds(0);
|
||||
const graphQLUser = {
|
||||
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
||||
displayName: 'John Doe',
|
||||
email: 'john.doe@gmail.com',
|
||||
workspaceMember: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e88',
|
||||
workspace: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e89',
|
||||
displayName: 'John Doe',
|
||||
__typename: 'workspace',
|
||||
},
|
||||
__typename: 'workspace_members',
|
||||
},
|
||||
__typename: 'users',
|
||||
} satisfies GraphqlQueryUser;
|
||||
|
||||
const User = mapToUser(graphQLUser);
|
||||
expect(User).toStrictEqual({
|
||||
__typename: 'users',
|
||||
id: graphQLUser.id,
|
||||
displayName: graphQLUser.displayName,
|
||||
email: graphQLUser.email,
|
||||
workspaceMember: {
|
||||
id: graphQLUser.workspaceMember.id,
|
||||
workspace: {
|
||||
id: graphQLUser.workspaceMember.workspace.id,
|
||||
displayName: graphQLUser.workspaceMember.workspace.displayName,
|
||||
domainName: undefined,
|
||||
logo: undefined,
|
||||
},
|
||||
},
|
||||
} satisfies User);
|
||||
});
|
||||
|
||||
it('should map User to GraphQlUser', () => {
|
||||
const now = new Date();
|
||||
now.setMilliseconds(0);
|
||||
const user = {
|
||||
__typename: 'users',
|
||||
id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b',
|
||||
displayName: 'John Doe',
|
||||
email: 'john.doe@gmail.com',
|
||||
workspaceMember: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e88',
|
||||
workspace: {
|
||||
id: '7af20dea-0412-4c4c-8b13-d6f0e6e09e89',
|
||||
displayName: 'John Doe',
|
||||
},
|
||||
},
|
||||
} satisfies User;
|
||||
|
||||
const graphQLUser = mapToGqlUser(user);
|
||||
expect(graphQLUser).toStrictEqual({
|
||||
id: user.id,
|
||||
displayName: user.displayName,
|
||||
email: user.email,
|
||||
workspaceMemberId: user.workspaceMember.id,
|
||||
__typename: 'users',
|
||||
} satisfies GraphqlMutationUser);
|
||||
});
|
||||
});
|
||||
47
front/src/modules/users/interfaces/user.interface.ts
Normal file
47
front/src/modules/users/interfaces/user.interface.ts
Normal file
@ -0,0 +1,47 @@
|
||||
import {
|
||||
GraphqlQueryWorkspaceMember,
|
||||
mapToWorkspaceMember,
|
||||
WorkspaceMember,
|
||||
} from './workspaceMember.interface';
|
||||
|
||||
export interface User {
|
||||
__typename: 'users';
|
||||
id: string;
|
||||
email?: string;
|
||||
displayName?: string;
|
||||
workspaceMember?: WorkspaceMember;
|
||||
}
|
||||
|
||||
export type GraphqlQueryUser = {
|
||||
id: string;
|
||||
email?: string;
|
||||
displayName?: string;
|
||||
workspaceMember?: GraphqlQueryWorkspaceMember;
|
||||
__typename: string;
|
||||
};
|
||||
|
||||
export type GraphqlMutationUser = {
|
||||
id: string;
|
||||
email?: string;
|
||||
displayName?: string;
|
||||
workspaceMemberId?: string;
|
||||
__typename: string;
|
||||
};
|
||||
|
||||
export const mapToUser = (user: GraphqlQueryUser): User => ({
|
||||
__typename: 'users',
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
displayName: user.displayName,
|
||||
workspaceMember: user.workspaceMember
|
||||
? mapToWorkspaceMember(user.workspaceMember)
|
||||
: user.workspaceMember,
|
||||
});
|
||||
|
||||
export const mapToGqlUser = (user: User): GraphqlMutationUser => ({
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
displayName: user.displayName,
|
||||
workspaceMemberId: user.workspaceMember?.id,
|
||||
__typename: 'users',
|
||||
});
|
||||
@ -0,0 +1,39 @@
|
||||
import {
|
||||
GraphqlQueryWorkspace,
|
||||
mapToWorkspace,
|
||||
Workspace,
|
||||
} from '../../workspaces/interfaces/workspace.interface';
|
||||
|
||||
export interface WorkspaceMember {
|
||||
id: string;
|
||||
workspace: Workspace;
|
||||
}
|
||||
|
||||
export type GraphqlQueryWorkspaceMember = {
|
||||
id: string;
|
||||
workspace: GraphqlQueryWorkspace;
|
||||
__typename: string;
|
||||
};
|
||||
|
||||
export type GraphqlMutationWorkspaceMember = {
|
||||
id: string;
|
||||
workspace_id: string;
|
||||
__typename: string;
|
||||
};
|
||||
|
||||
export const mapToWorkspaceMember = (
|
||||
workspaceMember: GraphqlQueryWorkspaceMember,
|
||||
): WorkspaceMember => ({
|
||||
id: workspaceMember.id,
|
||||
workspace: workspaceMember.workspace
|
||||
? mapToWorkspace(workspaceMember.workspace)
|
||||
: workspaceMember.workspace,
|
||||
});
|
||||
|
||||
export const mapToGqlWorkspaceMember = (
|
||||
workspaceMember: WorkspaceMember,
|
||||
): GraphqlMutationWorkspaceMember => ({
|
||||
id: workspaceMember.id,
|
||||
workspace_id: workspaceMember.workspace?.id,
|
||||
__typename: 'workspace_members',
|
||||
});
|
||||
31
front/src/modules/users/services/index.tsx
Normal file
31
front/src/modules/users/services/index.tsx
Normal file
@ -0,0 +1,31 @@
|
||||
import { gql, QueryResult, useQuery } from '@apollo/client';
|
||||
|
||||
import { GraphqlQueryUser } from '../interfaces/user.interface';
|
||||
|
||||
export const GET_CURRENT_USER = gql`
|
||||
query GetCurrentUser($uuid: String) {
|
||||
users: findManyUser(where: { id: { equals: $uuid } }) {
|
||||
id
|
||||
email
|
||||
displayName
|
||||
workspaceMember {
|
||||
workspace {
|
||||
id
|
||||
domainName
|
||||
displayName
|
||||
logo
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
export function useGetCurrentUserQuery(userId: string | null): QueryResult<{
|
||||
users: GraphqlQueryUser[];
|
||||
}> {
|
||||
return useQuery<{ users: GraphqlQueryUser[] }>(GET_CURRENT_USER, {
|
||||
variables: {
|
||||
uuid: userId,
|
||||
},
|
||||
});
|
||||
}
|
||||
9
front/src/modules/users/services/test.tsx
Normal file
9
front/src/modules/users/services/test.tsx
Normal file
@ -0,0 +1,9 @@
|
||||
import { gql } from '@apollo/client';
|
||||
|
||||
export const GET_CURRENT_USER = gql`
|
||||
query getUsers {
|
||||
findManyUser {
|
||||
id
|
||||
}
|
||||
}
|
||||
`;
|
||||
Reference in New Issue
Block a user