Rename DATE to DATETIME (#2576)
* Rename DATE to DATETIME * rename DATE to DATE_TIME * fix server tests * rename date to datetime * rename date to datetime
This commit is contained in:
@ -152,7 +152,7 @@ export type FieldDeleteResponse = {
|
||||
export enum FieldMetadataType {
|
||||
Boolean = 'BOOLEAN',
|
||||
Currency = 'CURRENCY',
|
||||
Date = 'DATE',
|
||||
DateTime = 'DATE_TIME',
|
||||
Email = 'EMAIL',
|
||||
Enum = 'ENUM',
|
||||
FullName = 'FULL_NAME',
|
||||
@ -416,9 +416,9 @@ export type UpdateOneObjectInput = {
|
||||
|
||||
export type User = {
|
||||
__typename?: 'User';
|
||||
avatarUrl: Scalars['String']['output'];
|
||||
canImpersonate: Scalars['Boolean']['output'];
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
defaultWorkspace: Workspace;
|
||||
deletedAt?: Maybe<Scalars['DateTime']['output']>;
|
||||
disabled?: Maybe<Scalars['Boolean']['output']>;
|
||||
email: Scalars['String']['output'];
|
||||
@ -426,11 +426,9 @@ export type User = {
|
||||
firstName: Scalars['String']['output'];
|
||||
id: Scalars['ID']['output'];
|
||||
lastName: Scalars['String']['output'];
|
||||
lastSeen?: Maybe<Scalars['DateTime']['output']>;
|
||||
locale: Scalars['String']['output'];
|
||||
passwordHash?: Maybe<Scalars['String']['output']>;
|
||||
phoneNumber?: Maybe<Scalars['String']['output']>;
|
||||
updatedAt: Scalars['DateTime']['output'];
|
||||
workspaceMember: UserWorkspaceMember;
|
||||
};
|
||||
|
||||
export type UserEdge = {
|
||||
@ -441,6 +439,22 @@ export type UserEdge = {
|
||||
node: User;
|
||||
};
|
||||
|
||||
export type UserWorkspaceMember = {
|
||||
__typename?: 'UserWorkspaceMember';
|
||||
allowImpersonation: Scalars['Boolean']['output'];
|
||||
avatarUrl?: Maybe<Scalars['String']['output']>;
|
||||
colorScheme: Scalars['String']['output'];
|
||||
id: Scalars['ID']['output'];
|
||||
locale: Scalars['String']['output'];
|
||||
name: UserWorkspaceMemberName;
|
||||
};
|
||||
|
||||
export type UserWorkspaceMemberName = {
|
||||
__typename?: 'UserWorkspaceMemberName';
|
||||
firstName: Scalars['String']['output'];
|
||||
lastName: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export type Workspace = {
|
||||
__typename?: 'Workspace';
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
|
||||
@ -120,7 +120,7 @@ export type FieldDeleteResponse = {
|
||||
export enum FieldMetadataType {
|
||||
Boolean = 'BOOLEAN',
|
||||
Currency = 'CURRENCY',
|
||||
Date = 'DATE',
|
||||
DateTime = 'DATE_TIME',
|
||||
Email = 'EMAIL',
|
||||
Enum = 'ENUM',
|
||||
FullName = 'FULL_NAME',
|
||||
|
||||
@ -24,11 +24,10 @@ export const useMapFieldMetadataToGraphQLQuery = () => {
|
||||
'UUID',
|
||||
'TEXT',
|
||||
'PHONE',
|
||||
'DATE',
|
||||
'DATE_TIME',
|
||||
'EMAIL',
|
||||
'NUMBER',
|
||||
'BOOLEAN',
|
||||
'DATE',
|
||||
] as FieldType[]
|
||||
).includes(fieldType);
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ export const formatFieldMetadataItemsAsFilterDefinitions = ({
|
||||
fields.reduce((acc, field) => {
|
||||
if (
|
||||
![
|
||||
FieldMetadataType.Date,
|
||||
FieldMetadataType.DateTime,
|
||||
FieldMetadataType.Number,
|
||||
FieldMetadataType.Text,
|
||||
].includes(field.type)
|
||||
@ -30,8 +30,8 @@ const formatFieldMetadataItemAsFilterDefinition = ({
|
||||
label: field.label,
|
||||
iconName: field.icon ?? 'Icon123',
|
||||
type:
|
||||
field.type === FieldMetadataType.Date
|
||||
? 'DATE'
|
||||
field.type === FieldMetadataType.DateTime
|
||||
? 'DATE_TIME'
|
||||
: field.type === FieldMetadataType.Number
|
||||
? 'NUMBER'
|
||||
: 'TEXT',
|
||||
|
||||
@ -11,7 +11,7 @@ export const formatFieldMetadataItemsAsSortDefinitions = ({
|
||||
fields.reduce((acc, field) => {
|
||||
if (
|
||||
![
|
||||
FieldMetadataType.Date,
|
||||
FieldMetadataType.DateTime,
|
||||
FieldMetadataType.Number,
|
||||
FieldMetadataType.Text,
|
||||
FieldMetadataType.Boolean,
|
||||
|
||||
@ -79,7 +79,7 @@ export const SettingsObjectFieldTypeSelectSection = ({
|
||||
[
|
||||
FieldMetadataType.Boolean,
|
||||
FieldMetadataType.Currency,
|
||||
FieldMetadataType.Date,
|
||||
FieldMetadataType.DateTime,
|
||||
FieldMetadataType.Link,
|
||||
FieldMetadataType.Number,
|
||||
FieldMetadataType.Relation,
|
||||
|
||||
@ -48,8 +48,8 @@ export const dataTypes: Record<
|
||||
Icon: IconCheck,
|
||||
defaultValue: true,
|
||||
},
|
||||
[FieldMetadataType.Date]: {
|
||||
label: 'Date',
|
||||
[FieldMetadataType.DateTime]: {
|
||||
label: 'Date & Time',
|
||||
Icon: IconCalendarEvent,
|
||||
defaultValue: defaultDateValue.toISOString(),
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
export type MetadataFieldDataType =
|
||||
| 'BOOLEAN'
|
||||
| 'DATE'
|
||||
| 'DATE_TIME'
|
||||
| 'ENUM'
|
||||
| 'MONEY'
|
||||
| 'NUMBER'
|
||||
|
||||
@ -16,7 +16,7 @@ import { NumberFieldDisplay } from '../meta-types/display/components/NumberField
|
||||
import { PhoneFieldDisplay } from '../meta-types/display/components/PhoneFieldDisplay';
|
||||
import { TextFieldDisplay } from '../meta-types/display/components/TextFieldDisplay';
|
||||
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
|
||||
import { isFieldDate } from '../types/guards/isFieldDate';
|
||||
import { isFieldDateTime } from '../types/guards/isFieldDateTime';
|
||||
import { isFieldEmail } from '../types/guards/isFieldEmail';
|
||||
import { isFieldNumber } from '../types/guards/isFieldNumber';
|
||||
import { isFieldPhone } from '../types/guards/isFieldPhone';
|
||||
@ -36,7 +36,7 @@ export const FieldDisplay = () => {
|
||||
<UuidFieldDisplay />
|
||||
) : isFieldEmail(fieldDefinition) ? (
|
||||
<EmailFieldDisplay />
|
||||
) : isFieldDate(fieldDefinition) ? (
|
||||
) : isFieldDateTime(fieldDefinition) ? (
|
||||
<DateFieldDisplay />
|
||||
) : isFieldNumber(fieldDefinition) ? (
|
||||
<NumberFieldDisplay />
|
||||
|
||||
@ -18,7 +18,7 @@ import { TextFieldInput } from '../meta-types/input/components/TextFieldInput';
|
||||
import { FieldInputEvent } from '../types/FieldInputEvent';
|
||||
import { isFieldBoolean } from '../types/guards/isFieldBoolean';
|
||||
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
|
||||
import { isFieldDate } from '../types/guards/isFieldDate';
|
||||
import { isFieldDateTime } from '../types/guards/isFieldDateTime';
|
||||
import { isFieldEmail } from '../types/guards/isFieldEmail';
|
||||
import { isFieldLink } from '../types/guards/isFieldLink';
|
||||
import { isFieldNumber } from '../types/guards/isFieldNumber';
|
||||
@ -78,7 +78,7 @@ export const FieldInput = ({
|
||||
onTab={onTab}
|
||||
onShiftTab={onShiftTab}
|
||||
/>
|
||||
) : isFieldDate(fieldDefinition) ? (
|
||||
) : isFieldDateTime(fieldDefinition) ? (
|
||||
<DateFieldInput
|
||||
onEnter={onEnter}
|
||||
onEscape={onEscape}
|
||||
|
||||
@ -10,8 +10,8 @@ import { isFieldBoolean } from '../types/guards/isFieldBoolean';
|
||||
import { isFieldBooleanValue } from '../types/guards/isFieldBooleanValue';
|
||||
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
|
||||
import { isFieldCurrencyValue } from '../types/guards/isFieldCurrencyValue';
|
||||
import { isFieldDate } from '../types/guards/isFieldDate';
|
||||
import { isFieldDateValue } from '../types/guards/isFieldDateValue';
|
||||
import { isFieldDateTime } from '../types/guards/isFieldDateTime';
|
||||
import { isFieldDateTimeValue } from '../types/guards/isFieldDateTimeValue';
|
||||
import { isFieldEmail } from '../types/guards/isFieldEmail';
|
||||
import { isFieldEmailValue } from '../types/guards/isFieldEmailValue';
|
||||
import { isFieldLink } from '../types/guards/isFieldLink';
|
||||
@ -49,8 +49,9 @@ export const usePersistField = () => {
|
||||
const fieldIsEmail =
|
||||
isFieldEmail(fieldDefinition) && isFieldEmailValue(valueToPersist);
|
||||
|
||||
const fieldIsDate =
|
||||
isFieldDate(fieldDefinition) && isFieldDateValue(valueToPersist);
|
||||
const fieldIsDateTime =
|
||||
isFieldDateTime(fieldDefinition) &&
|
||||
isFieldDateTimeValue(valueToPersist);
|
||||
|
||||
const fieldIsLink =
|
||||
isFieldLink(fieldDefinition) && isFieldLinkValue(valueToPersist);
|
||||
@ -101,7 +102,7 @@ export const usePersistField = () => {
|
||||
fieldIsEmail ||
|
||||
fieldIsProbability ||
|
||||
fieldIsNumber ||
|
||||
fieldIsDate ||
|
||||
fieldIsDateTime ||
|
||||
fieldIsPhone ||
|
||||
fieldIsLink ||
|
||||
fieldIsCurrency ||
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import { DateDisplay } from '@/ui/object/field/meta-types/display/content-display/components/DateDisplay';
|
||||
|
||||
import { useDateField } from '../../hooks/useDateField';
|
||||
import { useDateTimeField } from '../../hooks/useDateTimeField';
|
||||
|
||||
export const DateFieldDisplay = () => {
|
||||
const { fieldValue } = useDateField();
|
||||
const { fieldValue } = useDateTimeField();
|
||||
|
||||
return <DateDisplay value={fieldValue} />;
|
||||
};
|
||||
|
||||
@ -4,13 +4,13 @@ import { Meta, StoryObj } from '@storybook/react';
|
||||
import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
|
||||
|
||||
import { FieldContext } from '../../../../contexts/FieldContext';
|
||||
import { useDateField } from '../../../hooks/useDateField';
|
||||
import { useDateTimeField } from '../../../hooks/useDateTimeField';
|
||||
import { DateFieldDisplay } from '../DateFieldDisplay';
|
||||
|
||||
const formattedDate = new Date('2023-04-01');
|
||||
|
||||
const DateFieldValueSetterEffect = ({ value }: { value: string }) => {
|
||||
const { setFieldValue } = useDateField();
|
||||
const { setFieldValue } = useDateTimeField();
|
||||
|
||||
useEffect(() => {
|
||||
setFieldValue(value);
|
||||
@ -30,7 +30,7 @@ const meta: Meta = {
|
||||
fieldDefinition: {
|
||||
fieldMetadataId: 'date',
|
||||
label: 'Date',
|
||||
type: 'DATE',
|
||||
type: 'DATE_TIME',
|
||||
iconName: 'IconCalendarEvent',
|
||||
metadata: {
|
||||
fieldName: 'Date',
|
||||
|
||||
@ -4,12 +4,12 @@ import { useRecoilState } from 'recoil';
|
||||
import { FieldContext } from '../../contexts/FieldContext';
|
||||
import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
|
||||
import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
|
||||
import { isFieldDate } from '../../types/guards/isFieldDate';
|
||||
import { isFieldDateTime } from '../../types/guards/isFieldDateTime';
|
||||
|
||||
export const useDateField = () => {
|
||||
export const useDateTimeField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('DATE', isFieldDate, fieldDefinition);
|
||||
assertFieldMetadata('DATE_TIME', isFieldDateTime, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
@ -2,7 +2,7 @@ import { DateInput } from '@/ui/object/field/meta-types/input/components/interna
|
||||
import { Nullable } from '~/types/Nullable';
|
||||
|
||||
import { usePersistField } from '../../../hooks/usePersistField';
|
||||
import { useDateField } from '../../hooks/useDateField';
|
||||
import { useDateTimeField } from '../../hooks/useDateTimeField';
|
||||
|
||||
export type FieldInputEvent = (persist: () => void) => void;
|
||||
|
||||
@ -19,7 +19,7 @@ export const DateFieldInput = ({
|
||||
onEscape,
|
||||
onClickOutside,
|
||||
}: DateFieldInputProps) => {
|
||||
const { fieldValue, hotkeyScope } = useDateField();
|
||||
const { fieldValue, hotkeyScope } = useDateTimeField();
|
||||
|
||||
const persistField = usePersistField();
|
||||
|
||||
|
||||
@ -6,13 +6,13 @@ import { userEvent, within } from '@storybook/testing-library';
|
||||
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
|
||||
|
||||
import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
|
||||
import { useDateField } from '../../../hooks/useDateField';
|
||||
import { useDateTimeField } from '../../../hooks/useDateTimeField';
|
||||
import { DateFieldInput, DateFieldInputProps } from '../DateFieldInput';
|
||||
|
||||
const formattedDate = new Date();
|
||||
|
||||
const DateFieldValueSetterEffect = ({ value }: { value: Date }) => {
|
||||
const { setFieldValue } = useDateField();
|
||||
const { setFieldValue } = useDateTimeField();
|
||||
|
||||
useEffect(() => {
|
||||
setFieldValue(value.toISOString());
|
||||
@ -45,7 +45,7 @@ const DateFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldMetadataId: 'date',
|
||||
label: 'Date',
|
||||
type: 'DATE',
|
||||
type: 'DATE_TIME',
|
||||
iconName: 'IconCalendarEvent',
|
||||
metadata: {
|
||||
fieldName: 'Date',
|
||||
|
||||
@ -10,7 +10,7 @@ import { FieldMetadata } from '../../types/FieldMetadata';
|
||||
import { isFieldBoolean } from '../../types/guards/isFieldBoolean';
|
||||
import { isFieldCurrency } from '../../types/guards/isFieldCurrency';
|
||||
import { isFieldCurrencyValue } from '../../types/guards/isFieldCurrencyValue';
|
||||
import { isFieldDate } from '../../types/guards/isFieldDate';
|
||||
import { isFieldDateTime } from '../../types/guards/isFieldDateTime';
|
||||
import { isFieldEmail } from '../../types/guards/isFieldEmail';
|
||||
import { isFieldLink } from '../../types/guards/isFieldLink';
|
||||
import { isFieldLinkValue } from '../../types/guards/isFieldLinkValue';
|
||||
@ -39,7 +39,7 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
|
||||
if (
|
||||
isFieldUuid(fieldDefinition) ||
|
||||
isFieldText(fieldDefinition) ||
|
||||
isFieldDate(fieldDefinition) ||
|
||||
isFieldDateTime(fieldDefinition) ||
|
||||
isFieldNumber(fieldDefinition) ||
|
||||
isFieldProbability(fieldDefinition) ||
|
||||
isFieldEmail(fieldDefinition) ||
|
||||
|
||||
@ -14,7 +14,7 @@ export type FieldTextMetadata = {
|
||||
fieldName: string;
|
||||
};
|
||||
|
||||
export type FieldDateMetadata = {
|
||||
export type FieldDateTimeMetadata = {
|
||||
placeHolder: string;
|
||||
fieldName: string;
|
||||
};
|
||||
@ -74,7 +74,7 @@ export type FieldRelationMetadata = {
|
||||
export type FieldMetadata =
|
||||
| FieldBooleanMetadata
|
||||
| FieldNumberMetadata
|
||||
| FieldDateMetadata
|
||||
| FieldDateTimeMetadata
|
||||
| FieldTextMetadata
|
||||
| FieldUuidMetadata
|
||||
| FieldCurrencyMetadata
|
||||
@ -87,7 +87,7 @@ export type FieldMetadata =
|
||||
|
||||
export type FieldTextValue = string;
|
||||
export type FieldUUidValue = string;
|
||||
export type FieldDateValue = string | null;
|
||||
export type FieldDateTimeValue = string | null;
|
||||
export type FieldNumberValue = number | null;
|
||||
export type FieldBooleanValue = boolean;
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@ export type FieldType =
|
||||
| 'TEXT'
|
||||
| 'RELATION'
|
||||
| 'CHIP'
|
||||
| 'DATE'
|
||||
| 'DATE_TIME'
|
||||
| 'DOUBLE_TEXT_CHIP'
|
||||
| 'DOUBLE_TEXT'
|
||||
| 'EMAIL'
|
||||
|
||||
@ -2,7 +2,7 @@ import { FieldDefinition } from '../FieldDefinition';
|
||||
import {
|
||||
FieldBooleanMetadata,
|
||||
FieldCurrencyMetadata,
|
||||
FieldDateMetadata,
|
||||
FieldDateTimeMetadata,
|
||||
FieldEmailMetadata,
|
||||
FieldFullNameMetadata,
|
||||
FieldLinkMetadata,
|
||||
@ -24,8 +24,8 @@ type AssertFieldMetadataFunction = <
|
||||
? FieldCurrencyMetadata
|
||||
: E extends 'FULL_NAME'
|
||||
? FieldFullNameMetadata
|
||||
: E extends 'DATE'
|
||||
? FieldDateMetadata
|
||||
: E extends 'DATE_TIME'
|
||||
? FieldDateTimeMetadata
|
||||
: E extends 'EMAIL'
|
||||
? FieldEmailMetadata
|
||||
: E extends 'LINK'
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldDateMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldDate = (
|
||||
field: Pick<FieldDefinition<FieldMetadata>, 'type'>,
|
||||
): field is FieldDefinition<FieldDateMetadata> => field.type === 'DATE';
|
||||
@ -0,0 +1,7 @@
|
||||
import { FieldDefinition } from '../FieldDefinition';
|
||||
import { FieldDateTimeMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldDateTime = (
|
||||
field: Pick<FieldDefinition<FieldMetadata>, 'type'>,
|
||||
): field is FieldDefinition<FieldDateTimeMetadata> =>
|
||||
field.type === 'DATE_TIME';
|
||||
@ -0,0 +1,9 @@
|
||||
import { isString } from '@sniptt/guards';
|
||||
|
||||
import { FieldDateTimeValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add zod
|
||||
export const isFieldDateTimeValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldDateTimeValue =>
|
||||
isString(fieldValue) && !isNaN(Date.parse(fieldValue));
|
||||
@ -1,20 +0,0 @@
|
||||
import { isNull, isString } from '@sniptt/guards';
|
||||
|
||||
import { formatToHumanReadableDate } from '~/utils';
|
||||
|
||||
import { FieldDateValue } from '../FieldMetadata';
|
||||
|
||||
// TODO: add zod
|
||||
export const isFieldDateValue = (
|
||||
fieldValue: unknown,
|
||||
): fieldValue is FieldDateValue => {
|
||||
try {
|
||||
if (isNull(fieldValue)) return true;
|
||||
if (isString(fieldValue)) {
|
||||
formatToHumanReadableDate(fieldValue);
|
||||
return true;
|
||||
}
|
||||
} catch {}
|
||||
|
||||
return false;
|
||||
};
|
||||
@ -36,7 +36,7 @@ export const MultipleFiltersDropdownContent = () => {
|
||||
{filterDefinitionUsedInDropdown.type === 'NUMBER' && (
|
||||
<ObjectFilterDropdownNumberSearchInput />
|
||||
)}
|
||||
{filterDefinitionUsedInDropdown.type === 'DATE' && (
|
||||
{filterDefinitionUsedInDropdown.type === 'DATE_TIME' && (
|
||||
<ObjectFilterDropdownDateSearchInput />
|
||||
)}
|
||||
{filterDefinitionUsedInDropdown.type === 'ENTITY' && (
|
||||
|
||||
@ -1 +1 @@
|
||||
export type FilterType = 'TEXT' | 'DATE' | 'ENTITY' | 'NUMBER';
|
||||
export type FilterType = 'TEXT' | 'DATE_TIME' | 'ENTITY' | 'NUMBER';
|
||||
|
||||
@ -9,7 +9,7 @@ export const getOperandsForFilterType = (
|
||||
case 'TEXT':
|
||||
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
|
||||
case 'NUMBER':
|
||||
case 'DATE':
|
||||
case 'DATE_TIME':
|
||||
return [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan];
|
||||
case 'ENTITY':
|
||||
return [ViewFilterOperand.Is, ViewFilterOperand.IsNot];
|
||||
|
||||
@ -62,7 +62,7 @@ export const turnFiltersIntoWhereClauseV2 = (
|
||||
`Unknown operand ${filter.operand} for ${filter.definition.type} filter`,
|
||||
);
|
||||
}
|
||||
case 'DATE':
|
||||
case 'DATE_TIME':
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.GreaterThan:
|
||||
whereClause[correspondingField.name] = {
|
||||
|
||||
@ -13,7 +13,7 @@ export const opportunityBoardFilterDefinitions: FilterDefinitionByEntity<Opportu
|
||||
fieldMetadataId: 'closeDate',
|
||||
label: 'Close date',
|
||||
iconName: 'IconCalendarEvent',
|
||||
type: 'DATE',
|
||||
type: 'DATE_TIME',
|
||||
},
|
||||
{
|
||||
fieldMetadataId: 'companyId',
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { getRepositoryToken } from '@nestjs/typeorm';
|
||||
|
||||
import { WorkspaceService } from 'src/core/workspace/services/workspace.service';
|
||||
import { Workspace } from 'src/core/workspace/workspace.entity';
|
||||
|
||||
import { AuthResolver } from './auth.resolver';
|
||||
|
||||
@ -15,7 +16,7 @@ describe('AuthResolver', () => {
|
||||
providers: [
|
||||
AuthResolver,
|
||||
{
|
||||
provide: WorkspaceService,
|
||||
provide: getRepositoryToken(Workspace),
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
|
||||
@ -1,7 +1,11 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { getRepositoryToken } from '@nestjs/typeorm';
|
||||
|
||||
import { UserService } from 'src/core/user/user.service';
|
||||
import { WorkspaceService } from 'src/core/workspace/services/workspace.service';
|
||||
import { UserService } from 'src/core/user/services/user.service';
|
||||
import { WorkspaceManagerService } from 'src/workspace/workspace-manager/workspace-manager.service';
|
||||
import { FileUploadService } from 'src/core/file/services/file-upload.service';
|
||||
import { Workspace } from 'src/core/workspace/workspace.entity';
|
||||
import { User } from 'src/core/user/user.entity';
|
||||
|
||||
import { AuthService } from './auth.service';
|
||||
import { TokenService } from './token.service';
|
||||
@ -22,7 +26,19 @@ describe('AuthService', () => {
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: WorkspaceService,
|
||||
provide: WorkspaceManagerService,
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: FileUploadService,
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: getRepositoryToken(Workspace),
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: getRepositoryToken(User),
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { JwtService } from '@nestjs/jwt';
|
||||
import { getRepositoryToken } from '@nestjs/typeorm';
|
||||
|
||||
import { EnvironmentService } from 'src/integrations/environment/environment.service';
|
||||
import { RefreshToken } from 'src/core/refresh-token/refresh-token.entity';
|
||||
import { User } from 'src/core/user/user.entity';
|
||||
|
||||
import { TokenService } from './token.service';
|
||||
|
||||
@ -20,6 +23,14 @@ describe('TokenService', () => {
|
||||
provide: EnvironmentService,
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: getRepositoryToken(User),
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: getRepositoryToken(RefreshToken),
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
|
||||
@ -2,6 +2,8 @@ import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { getRepositoryToken } from '@nestjs/typeorm';
|
||||
|
||||
import { User } from 'src/core/user/user.entity';
|
||||
import { DataSourceService } from 'src/metadata/data-source/data-source.service';
|
||||
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
|
||||
|
||||
import { UserService } from './user.service';
|
||||
|
||||
@ -16,6 +18,14 @@ describe('UserService', () => {
|
||||
provide: getRepositoryToken(User),
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: DataSourceService,
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: TypeORMService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { getRepositoryToken } from '@nestjs/typeorm';
|
||||
|
||||
import { Workspace } from 'src/core/workspace/workspace.entity';
|
||||
import { WorkspaceManagerService } from 'src/workspace/workspace-manager/workspace-manager.service';
|
||||
|
||||
import { WorkspaceService } from './workspace.service';
|
||||
|
||||
@ -16,6 +17,10 @@ describe('WorkspaceService', () => {
|
||||
provide: getRepositoryToken(Workspace),
|
||||
useValue: {},
|
||||
},
|
||||
{
|
||||
provide: WorkspaceManagerService,
|
||||
useValue: {},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ export const seedActivityTargetFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -87,7 +87,7 @@ export const seedActivityTargetFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -77,7 +77,7 @@ export const seedActivityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -95,7 +95,7 @@ export const seedActivityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
@ -170,7 +170,7 @@ export const seedActivityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'reminderAt',
|
||||
label: 'Reminder Date',
|
||||
targetColumnMap: {
|
||||
@ -188,7 +188,7 @@ export const seedActivityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'dueAt',
|
||||
label: 'Due Date',
|
||||
targetColumnMap: {
|
||||
@ -206,7 +206,7 @@ export const seedActivityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'completedAt',
|
||||
label: 'Completion Date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -66,7 +66,7 @@ export const seedApiKeyFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -84,7 +84,7 @@ export const seedApiKeyFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
@ -121,7 +121,7 @@ export const seedApiKeyFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'expiresAt',
|
||||
label: 'Expiration date',
|
||||
targetColumnMap: {
|
||||
@ -139,7 +139,7 @@ export const seedApiKeyFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'revokedAt',
|
||||
label: 'Revocation date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -75,7 +75,7 @@ export const seedAttachmentFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -93,7 +93,7 @@ export const seedAttachmentFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -68,7 +68,7 @@ export const seedCommentFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -86,7 +86,7 @@ export const seedCommentFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -80,7 +80,7 @@ export const seedCompanyFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -98,7 +98,7 @@ export const seedCompanyFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -71,7 +71,7 @@ export const seedFavoriteFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -89,7 +89,7 @@ export const seedFavoriteFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -75,7 +75,7 @@ export const seedOpportunityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -93,7 +93,7 @@ export const seedOpportunityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
@ -131,7 +131,7 @@ export const seedOpportunityFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'closeDate',
|
||||
label: 'Close date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -80,7 +80,7 @@ export const seedPersonFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -98,7 +98,7 @@ export const seedPersonFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -67,7 +67,7 @@ export const seedPipelineStepFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -85,7 +85,7 @@ export const seedPipelineStepFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -69,7 +69,7 @@ export const seedViewFieldFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -87,7 +87,7 @@ export const seedViewFieldFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -69,7 +69,7 @@ export const seedViewFilterFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -87,7 +87,7 @@ export const seedViewFilterFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -67,7 +67,7 @@ export const seedViewSortFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -85,7 +85,7 @@ export const seedViewSortFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -69,7 +69,7 @@ export const seedViewFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -87,7 +87,7 @@ export const seedViewFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -65,7 +65,7 @@ export const seedWebhookFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -83,7 +83,7 @@ export const seedWebhookFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -76,7 +76,7 @@ export const seedWorkspaceMemberFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -94,7 +94,7 @@ export const seedWorkspaceMemberFieldMetadata = async (
|
||||
isCustom: false,
|
||||
workspaceId: SeedWorkspaceId,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -22,7 +22,7 @@ export enum FieldMetadataType {
|
||||
TEXT = 'TEXT',
|
||||
PHONE = 'PHONE',
|
||||
EMAIL = 'EMAIL',
|
||||
DATE = 'DATE',
|
||||
DATE_TIME = 'DATE_TIME',
|
||||
BOOLEAN = 'BOOLEAN',
|
||||
NUMBER = 'NUMBER',
|
||||
PROBABILITY = 'PROBABILITY',
|
||||
|
||||
@ -9,7 +9,7 @@ export interface FieldMetadataDefaultValueNumber {
|
||||
export interface FieldMetadataDefaultValueBoolean {
|
||||
value: boolean;
|
||||
}
|
||||
export interface FieldMetadataDefaultValueDate {
|
||||
export interface FieldMetadataDefaultValueDateTime {
|
||||
value: Date;
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ type FieldMetadataScalarDefaultValue =
|
||||
| FieldMetadataDefaultValueString
|
||||
| FieldMetadataDefaultValueNumber
|
||||
| FieldMetadataDefaultValueBoolean
|
||||
| FieldMetadataDefaultValueDate;
|
||||
| FieldMetadataDefaultValueDateTime;
|
||||
|
||||
export type FieldMetadataDynamicDefaultValue =
|
||||
| { type: 'uuid' }
|
||||
@ -50,7 +50,7 @@ type FieldMetadataDefaultValueMapping = {
|
||||
[FieldMetadataType.TEXT]: FieldMetadataDefaultValueString;
|
||||
[FieldMetadataType.PHONE]: FieldMetadataDefaultValueString;
|
||||
[FieldMetadataType.EMAIL]: FieldMetadataDefaultValueString;
|
||||
[FieldMetadataType.DATE]: FieldMetadataDefaultValueDate;
|
||||
[FieldMetadataType.DATE_TIME]: FieldMetadataDefaultValueDateTime;
|
||||
[FieldMetadataType.BOOLEAN]: FieldMetadataDefaultValueBoolean;
|
||||
[FieldMetadataType.NUMBER]: FieldMetadataDefaultValueNumber;
|
||||
[FieldMetadataType.PROBABILITY]: FieldMetadataDefaultValueNumber;
|
||||
|
||||
@ -15,9 +15,12 @@ describe('validateDefaultValueBasedOnType', () => {
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it('should validate now dynamic default value for DATE type', () => {
|
||||
it('should validate now dynamic default value for DATE_TIME type', () => {
|
||||
expect(
|
||||
validateDefaultValueBasedOnType({ type: 'now' }, FieldMetadataType.DATE),
|
||||
validateDefaultValueBasedOnType(
|
||||
{ type: 'now' },
|
||||
FieldMetadataType.DATE_TIME,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
|
||||
@ -72,9 +72,9 @@ export function convertFieldMetadataToColumnActions(
|
||||
},
|
||||
];
|
||||
}
|
||||
case FieldMetadataType.DATE: {
|
||||
case FieldMetadataType.DATE_TIME: {
|
||||
const defaultValue =
|
||||
fieldMetadata.defaultValue as FieldMetadataDefaultValue<FieldMetadataType.DATE>;
|
||||
fieldMetadata.defaultValue as FieldMetadataDefaultValue<FieldMetadataType.DATE_TIME>;
|
||||
|
||||
return [
|
||||
{
|
||||
|
||||
@ -25,7 +25,7 @@ export function generateTargetColumnMap(
|
||||
case FieldMetadataType.NUMBER:
|
||||
case FieldMetadataType.PROBABILITY:
|
||||
case FieldMetadataType.BOOLEAN:
|
||||
case FieldMetadataType.DATE:
|
||||
case FieldMetadataType.DATE_TIME:
|
||||
return {
|
||||
value: columnName,
|
||||
};
|
||||
|
||||
@ -13,7 +13,7 @@ export const validateDefaultValueBasedOnType = (
|
||||
if (type === FieldMetadataType.UUID && defaultValue.type === 'uuid') {
|
||||
return true;
|
||||
}
|
||||
if (type === FieldMetadataType.DATE && defaultValue.type === 'now') {
|
||||
if (type === FieldMetadataType.DATE_TIME && defaultValue.type === 'now') {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ export const validateDefaultValueBasedOnType = (
|
||||
typeof defaultValue.value === 'boolean'
|
||||
);
|
||||
|
||||
case FieldMetadataType.DATE:
|
||||
case FieldMetadataType.DATE_TIME:
|
||||
return (
|
||||
typeof defaultValue === 'object' &&
|
||||
'value' in defaultValue &&
|
||||
|
||||
@ -88,7 +88,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
|
||||
defaultValue: { type: 'uuid' },
|
||||
},
|
||||
{
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
targetColumnMap: {
|
||||
@ -103,7 +103,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
|
||||
defaultValue: { type: 'now' },
|
||||
},
|
||||
{
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -54,7 +54,7 @@ const activityMetadata = {
|
||||
{
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'reminderAt',
|
||||
label: 'Reminder Date',
|
||||
targetColumnMap: {
|
||||
@ -67,7 +67,7 @@ const activityMetadata = {
|
||||
{
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'dueAt',
|
||||
label: 'Due Date',
|
||||
targetColumnMap: {
|
||||
@ -80,7 +80,7 @@ const activityMetadata = {
|
||||
{
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'completedAt',
|
||||
label: 'Completion Date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -27,7 +27,7 @@ const apiKeyMetadata = {
|
||||
{
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'expiresAt',
|
||||
label: 'Expiration date',
|
||||
targetColumnMap: {
|
||||
@ -40,7 +40,7 @@ const apiKeyMetadata = {
|
||||
{
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'revokedAt',
|
||||
label: 'Revocation date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -28,7 +28,7 @@ const opportunityMetadata = {
|
||||
{
|
||||
isCustom: false,
|
||||
isActive: true,
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
name: 'closeDate',
|
||||
label: 'Close date',
|
||||
targetColumnMap: {
|
||||
|
||||
@ -55,7 +55,7 @@ export const basicFieldsMetadata: Partial<FieldMetadataEntity>[] = [
|
||||
{
|
||||
name: 'createdAt',
|
||||
label: 'Creation date',
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
targetColumnMap: {
|
||||
value: 'createdAt',
|
||||
},
|
||||
@ -68,7 +68,7 @@ export const basicFieldsMetadata: Partial<FieldMetadataEntity>[] = [
|
||||
{
|
||||
name: 'updatedAt',
|
||||
label: 'Update date',
|
||||
type: FieldMetadataType.DATE,
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
targetColumnMap: {
|
||||
value: 'updatedAt',
|
||||
},
|
||||
|
||||
@ -58,7 +58,7 @@ export class TypeMapperService {
|
||||
[FieldMetadataType.TEXT, GraphQLString],
|
||||
[FieldMetadataType.PHONE, GraphQLString],
|
||||
[FieldMetadataType.EMAIL, GraphQLString],
|
||||
[FieldMetadataType.DATE, dateScalar],
|
||||
[FieldMetadataType.DATE_TIME, dateScalar],
|
||||
[FieldMetadataType.BOOLEAN, GraphQLBoolean],
|
||||
[FieldMetadataType.NUMBER, numberScalar],
|
||||
[FieldMetadataType.PROBABILITY, GraphQLFloat],
|
||||
@ -87,7 +87,7 @@ export class TypeMapperService {
|
||||
[FieldMetadataType.TEXT, StringFilterType],
|
||||
[FieldMetadataType.PHONE, StringFilterType],
|
||||
[FieldMetadataType.EMAIL, StringFilterType],
|
||||
[FieldMetadataType.DATE, dateFilter],
|
||||
[FieldMetadataType.DATE_TIME, dateFilter],
|
||||
[FieldMetadataType.BOOLEAN, BooleanFilterType],
|
||||
[FieldMetadataType.NUMBER, numberScalar],
|
||||
[FieldMetadataType.PROBABILITY, FloatFilterType],
|
||||
@ -106,7 +106,7 @@ export class TypeMapperService {
|
||||
[FieldMetadataType.TEXT, OrderByDirectionType],
|
||||
[FieldMetadataType.PHONE, OrderByDirectionType],
|
||||
[FieldMetadataType.EMAIL, OrderByDirectionType],
|
||||
[FieldMetadataType.DATE, OrderByDirectionType],
|
||||
[FieldMetadataType.DATE_TIME, OrderByDirectionType],
|
||||
[FieldMetadataType.BOOLEAN, OrderByDirectionType],
|
||||
[FieldMetadataType.NUMBER, OrderByDirectionType],
|
||||
[FieldMetadataType.PROBABILITY, OrderByDirectionType],
|
||||
|
||||
@ -4,7 +4,7 @@ import { getFieldMetadataType } from 'src/workspace/workspace-schema-builder/uti
|
||||
describe('getFieldMetadataType', () => {
|
||||
it.each([
|
||||
['uuid', FieldMetadataType.UUID],
|
||||
['timestamp', FieldMetadataType.DATE],
|
||||
['timestamp', FieldMetadataType.DATE_TIME],
|
||||
])(
|
||||
'should return correct FieldMetadataType for type %s',
|
||||
(type, expectedMetadataType) => {
|
||||
|
||||
@ -2,7 +2,7 @@ import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.en
|
||||
|
||||
const typeOrmTypeMapping = new Map<string, FieldMetadataType>([
|
||||
['uuid', FieldMetadataType.UUID],
|
||||
['timestamp', FieldMetadataType.DATE],
|
||||
['timestamp', FieldMetadataType.DATE_TIME],
|
||||
// Add more types here if we need to support more than id, and createdAt/updatedAt/deletedAt
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user