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:
Weiko
2023-11-21 00:16:42 +01:00
committed by GitHub
parent b3c1723638
commit a33d4c8b8d
64 changed files with 197 additions and 147 deletions

View File

@ -152,7 +152,7 @@ export type FieldDeleteResponse = {
export enum FieldMetadataType { export enum FieldMetadataType {
Boolean = 'BOOLEAN', Boolean = 'BOOLEAN',
Currency = 'CURRENCY', Currency = 'CURRENCY',
Date = 'DATE', DateTime = 'DATE_TIME',
Email = 'EMAIL', Email = 'EMAIL',
Enum = 'ENUM', Enum = 'ENUM',
FullName = 'FULL_NAME', FullName = 'FULL_NAME',
@ -416,9 +416,9 @@ export type UpdateOneObjectInput = {
export type User = { export type User = {
__typename?: 'User'; __typename?: 'User';
avatarUrl: Scalars['String']['output'];
canImpersonate: Scalars['Boolean']['output']; canImpersonate: Scalars['Boolean']['output'];
createdAt: Scalars['DateTime']['output']; createdAt: Scalars['DateTime']['output'];
defaultWorkspace: Workspace;
deletedAt?: Maybe<Scalars['DateTime']['output']>; deletedAt?: Maybe<Scalars['DateTime']['output']>;
disabled?: Maybe<Scalars['Boolean']['output']>; disabled?: Maybe<Scalars['Boolean']['output']>;
email: Scalars['String']['output']; email: Scalars['String']['output'];
@ -426,11 +426,9 @@ export type User = {
firstName: Scalars['String']['output']; firstName: Scalars['String']['output'];
id: Scalars['ID']['output']; id: Scalars['ID']['output'];
lastName: Scalars['String']['output']; lastName: Scalars['String']['output'];
lastSeen?: Maybe<Scalars['DateTime']['output']>;
locale: Scalars['String']['output'];
passwordHash?: Maybe<Scalars['String']['output']>; passwordHash?: Maybe<Scalars['String']['output']>;
phoneNumber?: Maybe<Scalars['String']['output']>;
updatedAt: Scalars['DateTime']['output']; updatedAt: Scalars['DateTime']['output'];
workspaceMember: UserWorkspaceMember;
}; };
export type UserEdge = { export type UserEdge = {
@ -441,6 +439,22 @@ export type UserEdge = {
node: User; 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 = { export type Workspace = {
__typename?: 'Workspace'; __typename?: 'Workspace';
createdAt: Scalars['DateTime']['output']; createdAt: Scalars['DateTime']['output'];

View File

@ -120,7 +120,7 @@ export type FieldDeleteResponse = {
export enum FieldMetadataType { export enum FieldMetadataType {
Boolean = 'BOOLEAN', Boolean = 'BOOLEAN',
Currency = 'CURRENCY', Currency = 'CURRENCY',
Date = 'DATE', DateTime = 'DATE_TIME',
Email = 'EMAIL', Email = 'EMAIL',
Enum = 'ENUM', Enum = 'ENUM',
FullName = 'FULL_NAME', FullName = 'FULL_NAME',

View File

@ -24,11 +24,10 @@ export const useMapFieldMetadataToGraphQLQuery = () => {
'UUID', 'UUID',
'TEXT', 'TEXT',
'PHONE', 'PHONE',
'DATE', 'DATE_TIME',
'EMAIL', 'EMAIL',
'NUMBER', 'NUMBER',
'BOOLEAN', 'BOOLEAN',
'DATE',
] as FieldType[] ] as FieldType[]
).includes(fieldType); ).includes(fieldType);

View File

@ -11,7 +11,7 @@ export const formatFieldMetadataItemsAsFilterDefinitions = ({
fields.reduce((acc, field) => { fields.reduce((acc, field) => {
if ( if (
![ ![
FieldMetadataType.Date, FieldMetadataType.DateTime,
FieldMetadataType.Number, FieldMetadataType.Number,
FieldMetadataType.Text, FieldMetadataType.Text,
].includes(field.type) ].includes(field.type)
@ -30,8 +30,8 @@ const formatFieldMetadataItemAsFilterDefinition = ({
label: field.label, label: field.label,
iconName: field.icon ?? 'Icon123', iconName: field.icon ?? 'Icon123',
type: type:
field.type === FieldMetadataType.Date field.type === FieldMetadataType.DateTime
? 'DATE' ? 'DATE_TIME'
: field.type === FieldMetadataType.Number : field.type === FieldMetadataType.Number
? 'NUMBER' ? 'NUMBER'
: 'TEXT', : 'TEXT',

View File

@ -11,7 +11,7 @@ export const formatFieldMetadataItemsAsSortDefinitions = ({
fields.reduce((acc, field) => { fields.reduce((acc, field) => {
if ( if (
![ ![
FieldMetadataType.Date, FieldMetadataType.DateTime,
FieldMetadataType.Number, FieldMetadataType.Number,
FieldMetadataType.Text, FieldMetadataType.Text,
FieldMetadataType.Boolean, FieldMetadataType.Boolean,

View File

@ -79,7 +79,7 @@ export const SettingsObjectFieldTypeSelectSection = ({
[ [
FieldMetadataType.Boolean, FieldMetadataType.Boolean,
FieldMetadataType.Currency, FieldMetadataType.Currency,
FieldMetadataType.Date, FieldMetadataType.DateTime,
FieldMetadataType.Link, FieldMetadataType.Link,
FieldMetadataType.Number, FieldMetadataType.Number,
FieldMetadataType.Relation, FieldMetadataType.Relation,

View File

@ -48,8 +48,8 @@ export const dataTypes: Record<
Icon: IconCheck, Icon: IconCheck,
defaultValue: true, defaultValue: true,
}, },
[FieldMetadataType.Date]: { [FieldMetadataType.DateTime]: {
label: 'Date', label: 'Date & Time',
Icon: IconCalendarEvent, Icon: IconCalendarEvent,
defaultValue: defaultDateValue.toISOString(), defaultValue: defaultDateValue.toISOString(),
}, },

View File

@ -1,6 +1,6 @@
export type MetadataFieldDataType = export type MetadataFieldDataType =
| 'BOOLEAN' | 'BOOLEAN'
| 'DATE' | 'DATE_TIME'
| 'ENUM' | 'ENUM'
| 'MONEY' | 'MONEY'
| 'NUMBER' | 'NUMBER'

View File

@ -16,7 +16,7 @@ import { NumberFieldDisplay } from '../meta-types/display/components/NumberField
import { PhoneFieldDisplay } from '../meta-types/display/components/PhoneFieldDisplay'; import { PhoneFieldDisplay } from '../meta-types/display/components/PhoneFieldDisplay';
import { TextFieldDisplay } from '../meta-types/display/components/TextFieldDisplay'; import { TextFieldDisplay } from '../meta-types/display/components/TextFieldDisplay';
import { isFieldCurrency } from '../types/guards/isFieldCurrency'; 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 { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldNumber } from '../types/guards/isFieldNumber'; import { isFieldNumber } from '../types/guards/isFieldNumber';
import { isFieldPhone } from '../types/guards/isFieldPhone'; import { isFieldPhone } from '../types/guards/isFieldPhone';
@ -36,7 +36,7 @@ export const FieldDisplay = () => {
<UuidFieldDisplay /> <UuidFieldDisplay />
) : isFieldEmail(fieldDefinition) ? ( ) : isFieldEmail(fieldDefinition) ? (
<EmailFieldDisplay /> <EmailFieldDisplay />
) : isFieldDate(fieldDefinition) ? ( ) : isFieldDateTime(fieldDefinition) ? (
<DateFieldDisplay /> <DateFieldDisplay />
) : isFieldNumber(fieldDefinition) ? ( ) : isFieldNumber(fieldDefinition) ? (
<NumberFieldDisplay /> <NumberFieldDisplay />

View File

@ -18,7 +18,7 @@ import { TextFieldInput } from '../meta-types/input/components/TextFieldInput';
import { FieldInputEvent } from '../types/FieldInputEvent'; import { FieldInputEvent } from '../types/FieldInputEvent';
import { isFieldBoolean } from '../types/guards/isFieldBoolean'; import { isFieldBoolean } from '../types/guards/isFieldBoolean';
import { isFieldCurrency } from '../types/guards/isFieldCurrency'; 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 { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldLink } from '../types/guards/isFieldLink'; import { isFieldLink } from '../types/guards/isFieldLink';
import { isFieldNumber } from '../types/guards/isFieldNumber'; import { isFieldNumber } from '../types/guards/isFieldNumber';
@ -78,7 +78,7 @@ export const FieldInput = ({
onTab={onTab} onTab={onTab}
onShiftTab={onShiftTab} onShiftTab={onShiftTab}
/> />
) : isFieldDate(fieldDefinition) ? ( ) : isFieldDateTime(fieldDefinition) ? (
<DateFieldInput <DateFieldInput
onEnter={onEnter} onEnter={onEnter}
onEscape={onEscape} onEscape={onEscape}

View File

@ -10,8 +10,8 @@ import { isFieldBoolean } from '../types/guards/isFieldBoolean';
import { isFieldBooleanValue } from '../types/guards/isFieldBooleanValue'; import { isFieldBooleanValue } from '../types/guards/isFieldBooleanValue';
import { isFieldCurrency } from '../types/guards/isFieldCurrency'; import { isFieldCurrency } from '../types/guards/isFieldCurrency';
import { isFieldCurrencyValue } from '../types/guards/isFieldCurrencyValue'; import { isFieldCurrencyValue } from '../types/guards/isFieldCurrencyValue';
import { isFieldDate } from '../types/guards/isFieldDate'; import { isFieldDateTime } from '../types/guards/isFieldDateTime';
import { isFieldDateValue } from '../types/guards/isFieldDateValue'; import { isFieldDateTimeValue } from '../types/guards/isFieldDateTimeValue';
import { isFieldEmail } from '../types/guards/isFieldEmail'; import { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldEmailValue } from '../types/guards/isFieldEmailValue'; import { isFieldEmailValue } from '../types/guards/isFieldEmailValue';
import { isFieldLink } from '../types/guards/isFieldLink'; import { isFieldLink } from '../types/guards/isFieldLink';
@ -49,8 +49,9 @@ export const usePersistField = () => {
const fieldIsEmail = const fieldIsEmail =
isFieldEmail(fieldDefinition) && isFieldEmailValue(valueToPersist); isFieldEmail(fieldDefinition) && isFieldEmailValue(valueToPersist);
const fieldIsDate = const fieldIsDateTime =
isFieldDate(fieldDefinition) && isFieldDateValue(valueToPersist); isFieldDateTime(fieldDefinition) &&
isFieldDateTimeValue(valueToPersist);
const fieldIsLink = const fieldIsLink =
isFieldLink(fieldDefinition) && isFieldLinkValue(valueToPersist); isFieldLink(fieldDefinition) && isFieldLinkValue(valueToPersist);
@ -101,7 +102,7 @@ export const usePersistField = () => {
fieldIsEmail || fieldIsEmail ||
fieldIsProbability || fieldIsProbability ||
fieldIsNumber || fieldIsNumber ||
fieldIsDate || fieldIsDateTime ||
fieldIsPhone || fieldIsPhone ||
fieldIsLink || fieldIsLink ||
fieldIsCurrency || fieldIsCurrency ||

View File

@ -1,9 +1,9 @@
import { DateDisplay } from '@/ui/object/field/meta-types/display/content-display/components/DateDisplay'; 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 = () => { export const DateFieldDisplay = () => {
const { fieldValue } = useDateField(); const { fieldValue } = useDateTimeField();
return <DateDisplay value={fieldValue} />; return <DateDisplay value={fieldValue} />;
}; };

View File

@ -4,13 +4,13 @@ import { Meta, StoryObj } from '@storybook/react';
import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator'; import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
import { FieldContext } from '../../../../contexts/FieldContext'; import { FieldContext } from '../../../../contexts/FieldContext';
import { useDateField } from '../../../hooks/useDateField'; import { useDateTimeField } from '../../../hooks/useDateTimeField';
import { DateFieldDisplay } from '../DateFieldDisplay'; import { DateFieldDisplay } from '../DateFieldDisplay';
const formattedDate = new Date('2023-04-01'); const formattedDate = new Date('2023-04-01');
const DateFieldValueSetterEffect = ({ value }: { value: string }) => { const DateFieldValueSetterEffect = ({ value }: { value: string }) => {
const { setFieldValue } = useDateField(); const { setFieldValue } = useDateTimeField();
useEffect(() => { useEffect(() => {
setFieldValue(value); setFieldValue(value);
@ -30,7 +30,7 @@ const meta: Meta = {
fieldDefinition: { fieldDefinition: {
fieldMetadataId: 'date', fieldMetadataId: 'date',
label: 'Date', label: 'Date',
type: 'DATE', type: 'DATE_TIME',
iconName: 'IconCalendarEvent', iconName: 'IconCalendarEvent',
metadata: { metadata: {
fieldName: 'Date', fieldName: 'Date',

View File

@ -4,12 +4,12 @@ import { useRecoilState } from 'recoil';
import { FieldContext } from '../../contexts/FieldContext'; import { FieldContext } from '../../contexts/FieldContext';
import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector'; import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata'; 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); const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
assertFieldMetadata('DATE', isFieldDate, fieldDefinition); assertFieldMetadata('DATE_TIME', isFieldDateTime, fieldDefinition);
const fieldName = fieldDefinition.metadata.fieldName; const fieldName = fieldDefinition.metadata.fieldName;

View File

@ -2,7 +2,7 @@ import { DateInput } from '@/ui/object/field/meta-types/input/components/interna
import { Nullable } from '~/types/Nullable'; import { Nullable } from '~/types/Nullable';
import { usePersistField } from '../../../hooks/usePersistField'; import { usePersistField } from '../../../hooks/usePersistField';
import { useDateField } from '../../hooks/useDateField'; import { useDateTimeField } from '../../hooks/useDateTimeField';
export type FieldInputEvent = (persist: () => void) => void; export type FieldInputEvent = (persist: () => void) => void;
@ -19,7 +19,7 @@ export const DateFieldInput = ({
onEscape, onEscape,
onClickOutside, onClickOutside,
}: DateFieldInputProps) => { }: DateFieldInputProps) => {
const { fieldValue, hotkeyScope } = useDateField(); const { fieldValue, hotkeyScope } = useDateTimeField();
const persistField = usePersistField(); const persistField = usePersistField();

View File

@ -6,13 +6,13 @@ import { userEvent, within } from '@storybook/testing-library';
import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
import { FieldContextProvider } from '../../../__stories__/FieldContextProvider'; import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
import { useDateField } from '../../../hooks/useDateField'; import { useDateTimeField } from '../../../hooks/useDateTimeField';
import { DateFieldInput, DateFieldInputProps } from '../DateFieldInput'; import { DateFieldInput, DateFieldInputProps } from '../DateFieldInput';
const formattedDate = new Date(); const formattedDate = new Date();
const DateFieldValueSetterEffect = ({ value }: { value: Date }) => { const DateFieldValueSetterEffect = ({ value }: { value: Date }) => {
const { setFieldValue } = useDateField(); const { setFieldValue } = useDateTimeField();
useEffect(() => { useEffect(() => {
setFieldValue(value.toISOString()); setFieldValue(value.toISOString());
@ -45,7 +45,7 @@ const DateFieldInputWithContext = ({
fieldDefinition={{ fieldDefinition={{
fieldMetadataId: 'date', fieldMetadataId: 'date',
label: 'Date', label: 'Date',
type: 'DATE', type: 'DATE_TIME',
iconName: 'IconCalendarEvent', iconName: 'IconCalendarEvent',
metadata: { metadata: {
fieldName: 'Date', fieldName: 'Date',

View File

@ -10,7 +10,7 @@ import { FieldMetadata } from '../../types/FieldMetadata';
import { isFieldBoolean } from '../../types/guards/isFieldBoolean'; import { isFieldBoolean } from '../../types/guards/isFieldBoolean';
import { isFieldCurrency } from '../../types/guards/isFieldCurrency'; import { isFieldCurrency } from '../../types/guards/isFieldCurrency';
import { isFieldCurrencyValue } from '../../types/guards/isFieldCurrencyValue'; 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 { isFieldEmail } from '../../types/guards/isFieldEmail';
import { isFieldLink } from '../../types/guards/isFieldLink'; import { isFieldLink } from '../../types/guards/isFieldLink';
import { isFieldLinkValue } from '../../types/guards/isFieldLinkValue'; import { isFieldLinkValue } from '../../types/guards/isFieldLinkValue';
@ -39,7 +39,7 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
if ( if (
isFieldUuid(fieldDefinition) || isFieldUuid(fieldDefinition) ||
isFieldText(fieldDefinition) || isFieldText(fieldDefinition) ||
isFieldDate(fieldDefinition) || isFieldDateTime(fieldDefinition) ||
isFieldNumber(fieldDefinition) || isFieldNumber(fieldDefinition) ||
isFieldProbability(fieldDefinition) || isFieldProbability(fieldDefinition) ||
isFieldEmail(fieldDefinition) || isFieldEmail(fieldDefinition) ||

View File

@ -14,7 +14,7 @@ export type FieldTextMetadata = {
fieldName: string; fieldName: string;
}; };
export type FieldDateMetadata = { export type FieldDateTimeMetadata = {
placeHolder: string; placeHolder: string;
fieldName: string; fieldName: string;
}; };
@ -74,7 +74,7 @@ export type FieldRelationMetadata = {
export type FieldMetadata = export type FieldMetadata =
| FieldBooleanMetadata | FieldBooleanMetadata
| FieldNumberMetadata | FieldNumberMetadata
| FieldDateMetadata | FieldDateTimeMetadata
| FieldTextMetadata | FieldTextMetadata
| FieldUuidMetadata | FieldUuidMetadata
| FieldCurrencyMetadata | FieldCurrencyMetadata
@ -87,7 +87,7 @@ export type FieldMetadata =
export type FieldTextValue = string; export type FieldTextValue = string;
export type FieldUUidValue = string; export type FieldUUidValue = string;
export type FieldDateValue = string | null; export type FieldDateTimeValue = string | null;
export type FieldNumberValue = number | null; export type FieldNumberValue = number | null;
export type FieldBooleanValue = boolean; export type FieldBooleanValue = boolean;

View File

@ -4,7 +4,7 @@ export type FieldType =
| 'TEXT' | 'TEXT'
| 'RELATION' | 'RELATION'
| 'CHIP' | 'CHIP'
| 'DATE' | 'DATE_TIME'
| 'DOUBLE_TEXT_CHIP' | 'DOUBLE_TEXT_CHIP'
| 'DOUBLE_TEXT' | 'DOUBLE_TEXT'
| 'EMAIL' | 'EMAIL'

View File

@ -2,7 +2,7 @@ import { FieldDefinition } from '../FieldDefinition';
import { import {
FieldBooleanMetadata, FieldBooleanMetadata,
FieldCurrencyMetadata, FieldCurrencyMetadata,
FieldDateMetadata, FieldDateTimeMetadata,
FieldEmailMetadata, FieldEmailMetadata,
FieldFullNameMetadata, FieldFullNameMetadata,
FieldLinkMetadata, FieldLinkMetadata,
@ -24,8 +24,8 @@ type AssertFieldMetadataFunction = <
? FieldCurrencyMetadata ? FieldCurrencyMetadata
: E extends 'FULL_NAME' : E extends 'FULL_NAME'
? FieldFullNameMetadata ? FieldFullNameMetadata
: E extends 'DATE' : E extends 'DATE_TIME'
? FieldDateMetadata ? FieldDateTimeMetadata
: E extends 'EMAIL' : E extends 'EMAIL'
? FieldEmailMetadata ? FieldEmailMetadata
: E extends 'LINK' : E extends 'LINK'

View File

@ -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';

View File

@ -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';

View File

@ -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));

View File

@ -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;
};

View File

@ -36,7 +36,7 @@ export const MultipleFiltersDropdownContent = () => {
{filterDefinitionUsedInDropdown.type === 'NUMBER' && ( {filterDefinitionUsedInDropdown.type === 'NUMBER' && (
<ObjectFilterDropdownNumberSearchInput /> <ObjectFilterDropdownNumberSearchInput />
)} )}
{filterDefinitionUsedInDropdown.type === 'DATE' && ( {filterDefinitionUsedInDropdown.type === 'DATE_TIME' && (
<ObjectFilterDropdownDateSearchInput /> <ObjectFilterDropdownDateSearchInput />
)} )}
{filterDefinitionUsedInDropdown.type === 'ENTITY' && ( {filterDefinitionUsedInDropdown.type === 'ENTITY' && (

View File

@ -1 +1 @@
export type FilterType = 'TEXT' | 'DATE' | 'ENTITY' | 'NUMBER'; export type FilterType = 'TEXT' | 'DATE_TIME' | 'ENTITY' | 'NUMBER';

View File

@ -9,7 +9,7 @@ export const getOperandsForFilterType = (
case 'TEXT': case 'TEXT':
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]; return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
case 'NUMBER': case 'NUMBER':
case 'DATE': case 'DATE_TIME':
return [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]; return [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan];
case 'ENTITY': case 'ENTITY':
return [ViewFilterOperand.Is, ViewFilterOperand.IsNot]; return [ViewFilterOperand.Is, ViewFilterOperand.IsNot];

View File

@ -62,7 +62,7 @@ export const turnFiltersIntoWhereClauseV2 = (
`Unknown operand ${filter.operand} for ${filter.definition.type} filter`, `Unknown operand ${filter.operand} for ${filter.definition.type} filter`,
); );
} }
case 'DATE': case 'DATE_TIME':
switch (filter.operand) { switch (filter.operand) {
case ViewFilterOperand.GreaterThan: case ViewFilterOperand.GreaterThan:
whereClause[correspondingField.name] = { whereClause[correspondingField.name] = {

View File

@ -13,7 +13,7 @@ export const opportunityBoardFilterDefinitions: FilterDefinitionByEntity<Opportu
fieldMetadataId: 'closeDate', fieldMetadataId: 'closeDate',
label: 'Close date', label: 'Close date',
iconName: 'IconCalendarEvent', iconName: 'IconCalendarEvent',
type: 'DATE', type: 'DATE_TIME',
}, },
{ {
fieldMetadataId: 'companyId', fieldMetadataId: 'companyId',

View File

@ -1,6 +1,7 @@
import { Test, TestingModule } from '@nestjs/testing'; 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'; import { AuthResolver } from './auth.resolver';
@ -15,7 +16,7 @@ describe('AuthResolver', () => {
providers: [ providers: [
AuthResolver, AuthResolver,
{ {
provide: WorkspaceService, provide: getRepositoryToken(Workspace),
useValue: {}, useValue: {},
}, },
{ {

View File

@ -1,7 +1,11 @@
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { getRepositoryToken } from '@nestjs/typeorm';
import { UserService } from 'src/core/user/user.service'; import { UserService } from 'src/core/user/services/user.service';
import { WorkspaceService } from 'src/core/workspace/services/workspace.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 { AuthService } from './auth.service';
import { TokenService } from './token.service'; import { TokenService } from './token.service';
@ -22,7 +26,19 @@ describe('AuthService', () => {
useValue: {}, useValue: {},
}, },
{ {
provide: WorkspaceService, provide: WorkspaceManagerService,
useValue: {},
},
{
provide: FileUploadService,
useValue: {},
},
{
provide: getRepositoryToken(Workspace),
useValue: {},
},
{
provide: getRepositoryToken(User),
useValue: {}, useValue: {},
}, },
], ],

View File

@ -1,7 +1,10 @@
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { JwtService } from '@nestjs/jwt'; import { JwtService } from '@nestjs/jwt';
import { getRepositoryToken } from '@nestjs/typeorm';
import { EnvironmentService } from 'src/integrations/environment/environment.service'; 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'; import { TokenService } from './token.service';
@ -20,6 +23,14 @@ describe('TokenService', () => {
provide: EnvironmentService, provide: EnvironmentService,
useValue: {}, useValue: {},
}, },
{
provide: getRepositoryToken(User),
useValue: {},
},
{
provide: getRepositoryToken(RefreshToken),
useValue: {},
},
], ],
}).compile(); }).compile();

View File

@ -2,6 +2,8 @@ import { Test, TestingModule } from '@nestjs/testing';
import { getRepositoryToken } from '@nestjs/typeorm'; import { getRepositoryToken } from '@nestjs/typeorm';
import { User } from 'src/core/user/user.entity'; 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'; import { UserService } from './user.service';
@ -16,6 +18,14 @@ describe('UserService', () => {
provide: getRepositoryToken(User), provide: getRepositoryToken(User),
useValue: {}, useValue: {},
}, },
{
provide: DataSourceService,
useValue: {},
},
{
provide: TypeORMService,
useValue: {},
},
], ],
}).compile(); }).compile();

View File

@ -2,6 +2,7 @@ import { Test, TestingModule } from '@nestjs/testing';
import { getRepositoryToken } from '@nestjs/typeorm'; import { getRepositoryToken } from '@nestjs/typeorm';
import { Workspace } from 'src/core/workspace/workspace.entity'; import { Workspace } from 'src/core/workspace/workspace.entity';
import { WorkspaceManagerService } from 'src/workspace/workspace-manager/workspace-manager.service';
import { WorkspaceService } from './workspace.service'; import { WorkspaceService } from './workspace.service';
@ -16,6 +17,10 @@ describe('WorkspaceService', () => {
provide: getRepositoryToken(Workspace), provide: getRepositoryToken(Workspace),
useValue: {}, useValue: {},
}, },
{
provide: WorkspaceManagerService,
useValue: {},
},
], ],
}).compile(); }).compile();

View File

@ -69,7 +69,7 @@ export const seedActivityTargetFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -87,7 +87,7 @@ export const seedActivityTargetFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -77,7 +77,7 @@ export const seedActivityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -95,7 +95,7 @@ export const seedActivityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {
@ -170,7 +170,7 @@ export const seedActivityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'reminderAt', name: 'reminderAt',
label: 'Reminder Date', label: 'Reminder Date',
targetColumnMap: { targetColumnMap: {
@ -188,7 +188,7 @@ export const seedActivityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'dueAt', name: 'dueAt',
label: 'Due Date', label: 'Due Date',
targetColumnMap: { targetColumnMap: {
@ -206,7 +206,7 @@ export const seedActivityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'completedAt', name: 'completedAt',
label: 'Completion Date', label: 'Completion Date',
targetColumnMap: { targetColumnMap: {

View File

@ -66,7 +66,7 @@ export const seedApiKeyFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -84,7 +84,7 @@ export const seedApiKeyFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {
@ -121,7 +121,7 @@ export const seedApiKeyFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'expiresAt', name: 'expiresAt',
label: 'Expiration date', label: 'Expiration date',
targetColumnMap: { targetColumnMap: {
@ -139,7 +139,7 @@ export const seedApiKeyFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'revokedAt', name: 'revokedAt',
label: 'Revocation date', label: 'Revocation date',
targetColumnMap: { targetColumnMap: {

View File

@ -75,7 +75,7 @@ export const seedAttachmentFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -93,7 +93,7 @@ export const seedAttachmentFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -68,7 +68,7 @@ export const seedCommentFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -86,7 +86,7 @@ export const seedCommentFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -80,7 +80,7 @@ export const seedCompanyFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -98,7 +98,7 @@ export const seedCompanyFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -71,7 +71,7 @@ export const seedFavoriteFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -89,7 +89,7 @@ export const seedFavoriteFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -75,7 +75,7 @@ export const seedOpportunityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -93,7 +93,7 @@ export const seedOpportunityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {
@ -131,7 +131,7 @@ export const seedOpportunityFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'closeDate', name: 'closeDate',
label: 'Close date', label: 'Close date',
targetColumnMap: { targetColumnMap: {

View File

@ -80,7 +80,7 @@ export const seedPersonFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -98,7 +98,7 @@ export const seedPersonFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -67,7 +67,7 @@ export const seedPipelineStepFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -85,7 +85,7 @@ export const seedPipelineStepFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -69,7 +69,7 @@ export const seedViewFieldFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -87,7 +87,7 @@ export const seedViewFieldFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -69,7 +69,7 @@ export const seedViewFilterFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -87,7 +87,7 @@ export const seedViewFilterFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -67,7 +67,7 @@ export const seedViewSortFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -85,7 +85,7 @@ export const seedViewSortFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -69,7 +69,7 @@ export const seedViewFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -87,7 +87,7 @@ export const seedViewFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -65,7 +65,7 @@ export const seedWebhookFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -83,7 +83,7 @@ export const seedWebhookFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -76,7 +76,7 @@ export const seedWorkspaceMemberFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -94,7 +94,7 @@ export const seedWorkspaceMemberFieldMetadata = async (
isCustom: false, isCustom: false,
workspaceId: SeedWorkspaceId, workspaceId: SeedWorkspaceId,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -22,7 +22,7 @@ export enum FieldMetadataType {
TEXT = 'TEXT', TEXT = 'TEXT',
PHONE = 'PHONE', PHONE = 'PHONE',
EMAIL = 'EMAIL', EMAIL = 'EMAIL',
DATE = 'DATE', DATE_TIME = 'DATE_TIME',
BOOLEAN = 'BOOLEAN', BOOLEAN = 'BOOLEAN',
NUMBER = 'NUMBER', NUMBER = 'NUMBER',
PROBABILITY = 'PROBABILITY', PROBABILITY = 'PROBABILITY',

View File

@ -9,7 +9,7 @@ export interface FieldMetadataDefaultValueNumber {
export interface FieldMetadataDefaultValueBoolean { export interface FieldMetadataDefaultValueBoolean {
value: boolean; value: boolean;
} }
export interface FieldMetadataDefaultValueDate { export interface FieldMetadataDefaultValueDateTime {
value: Date; value: Date;
} }
@ -17,7 +17,7 @@ type FieldMetadataScalarDefaultValue =
| FieldMetadataDefaultValueString | FieldMetadataDefaultValueString
| FieldMetadataDefaultValueNumber | FieldMetadataDefaultValueNumber
| FieldMetadataDefaultValueBoolean | FieldMetadataDefaultValueBoolean
| FieldMetadataDefaultValueDate; | FieldMetadataDefaultValueDateTime;
export type FieldMetadataDynamicDefaultValue = export type FieldMetadataDynamicDefaultValue =
| { type: 'uuid' } | { type: 'uuid' }
@ -50,7 +50,7 @@ type FieldMetadataDefaultValueMapping = {
[FieldMetadataType.TEXT]: FieldMetadataDefaultValueString; [FieldMetadataType.TEXT]: FieldMetadataDefaultValueString;
[FieldMetadataType.PHONE]: FieldMetadataDefaultValueString; [FieldMetadataType.PHONE]: FieldMetadataDefaultValueString;
[FieldMetadataType.EMAIL]: FieldMetadataDefaultValueString; [FieldMetadataType.EMAIL]: FieldMetadataDefaultValueString;
[FieldMetadataType.DATE]: FieldMetadataDefaultValueDate; [FieldMetadataType.DATE_TIME]: FieldMetadataDefaultValueDateTime;
[FieldMetadataType.BOOLEAN]: FieldMetadataDefaultValueBoolean; [FieldMetadataType.BOOLEAN]: FieldMetadataDefaultValueBoolean;
[FieldMetadataType.NUMBER]: FieldMetadataDefaultValueNumber; [FieldMetadataType.NUMBER]: FieldMetadataDefaultValueNumber;
[FieldMetadataType.PROBABILITY]: FieldMetadataDefaultValueNumber; [FieldMetadataType.PROBABILITY]: FieldMetadataDefaultValueNumber;

View File

@ -15,9 +15,12 @@ describe('validateDefaultValueBasedOnType', () => {
).toBe(true); ).toBe(true);
}); });
it('should validate now dynamic default value for DATE type', () => { it('should validate now dynamic default value for DATE_TIME type', () => {
expect( expect(
validateDefaultValueBasedOnType({ type: 'now' }, FieldMetadataType.DATE), validateDefaultValueBasedOnType(
{ type: 'now' },
FieldMetadataType.DATE_TIME,
),
).toBe(true); ).toBe(true);
}); });

View File

@ -72,9 +72,9 @@ export function convertFieldMetadataToColumnActions(
}, },
]; ];
} }
case FieldMetadataType.DATE: { case FieldMetadataType.DATE_TIME: {
const defaultValue = const defaultValue =
fieldMetadata.defaultValue as FieldMetadataDefaultValue<FieldMetadataType.DATE>; fieldMetadata.defaultValue as FieldMetadataDefaultValue<FieldMetadataType.DATE_TIME>;
return [ return [
{ {

View File

@ -25,7 +25,7 @@ export function generateTargetColumnMap(
case FieldMetadataType.NUMBER: case FieldMetadataType.NUMBER:
case FieldMetadataType.PROBABILITY: case FieldMetadataType.PROBABILITY:
case FieldMetadataType.BOOLEAN: case FieldMetadataType.BOOLEAN:
case FieldMetadataType.DATE: case FieldMetadataType.DATE_TIME:
return { return {
value: columnName, value: columnName,
}; };

View File

@ -13,7 +13,7 @@ export const validateDefaultValueBasedOnType = (
if (type === FieldMetadataType.UUID && defaultValue.type === 'uuid') { if (type === FieldMetadataType.UUID && defaultValue.type === 'uuid') {
return true; return true;
} }
if (type === FieldMetadataType.DATE && defaultValue.type === 'now') { if (type === FieldMetadataType.DATE_TIME && defaultValue.type === 'now') {
return true; return true;
} }
@ -47,7 +47,7 @@ export const validateDefaultValueBasedOnType = (
typeof defaultValue.value === 'boolean' typeof defaultValue.value === 'boolean'
); );
case FieldMetadataType.DATE: case FieldMetadataType.DATE_TIME:
return ( return (
typeof defaultValue === 'object' && typeof defaultValue === 'object' &&
'value' in defaultValue && 'value' in defaultValue &&

View File

@ -88,7 +88,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
defaultValue: { type: 'uuid' }, defaultValue: { type: 'uuid' },
}, },
{ {
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
targetColumnMap: { targetColumnMap: {
@ -103,7 +103,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
defaultValue: { type: 'now' }, defaultValue: { type: 'now' },
}, },
{ {
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
targetColumnMap: { targetColumnMap: {

View File

@ -54,7 +54,7 @@ const activityMetadata = {
{ {
isCustom: false, isCustom: false,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'reminderAt', name: 'reminderAt',
label: 'Reminder Date', label: 'Reminder Date',
targetColumnMap: { targetColumnMap: {
@ -67,7 +67,7 @@ const activityMetadata = {
{ {
isCustom: false, isCustom: false,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'dueAt', name: 'dueAt',
label: 'Due Date', label: 'Due Date',
targetColumnMap: { targetColumnMap: {
@ -80,7 +80,7 @@ const activityMetadata = {
{ {
isCustom: false, isCustom: false,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'completedAt', name: 'completedAt',
label: 'Completion Date', label: 'Completion Date',
targetColumnMap: { targetColumnMap: {

View File

@ -27,7 +27,7 @@ const apiKeyMetadata = {
{ {
isCustom: false, isCustom: false,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'expiresAt', name: 'expiresAt',
label: 'Expiration date', label: 'Expiration date',
targetColumnMap: { targetColumnMap: {
@ -40,7 +40,7 @@ const apiKeyMetadata = {
{ {
isCustom: false, isCustom: false,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'revokedAt', name: 'revokedAt',
label: 'Revocation date', label: 'Revocation date',
targetColumnMap: { targetColumnMap: {

View File

@ -28,7 +28,7 @@ const opportunityMetadata = {
{ {
isCustom: false, isCustom: false,
isActive: true, isActive: true,
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
name: 'closeDate', name: 'closeDate',
label: 'Close date', label: 'Close date',
targetColumnMap: { targetColumnMap: {

View File

@ -55,7 +55,7 @@ export const basicFieldsMetadata: Partial<FieldMetadataEntity>[] = [
{ {
name: 'createdAt', name: 'createdAt',
label: 'Creation date', label: 'Creation date',
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
targetColumnMap: { targetColumnMap: {
value: 'createdAt', value: 'createdAt',
}, },
@ -68,7 +68,7 @@ export const basicFieldsMetadata: Partial<FieldMetadataEntity>[] = [
{ {
name: 'updatedAt', name: 'updatedAt',
label: 'Update date', label: 'Update date',
type: FieldMetadataType.DATE, type: FieldMetadataType.DATE_TIME,
targetColumnMap: { targetColumnMap: {
value: 'updatedAt', value: 'updatedAt',
}, },

View File

@ -58,7 +58,7 @@ export class TypeMapperService {
[FieldMetadataType.TEXT, GraphQLString], [FieldMetadataType.TEXT, GraphQLString],
[FieldMetadataType.PHONE, GraphQLString], [FieldMetadataType.PHONE, GraphQLString],
[FieldMetadataType.EMAIL, GraphQLString], [FieldMetadataType.EMAIL, GraphQLString],
[FieldMetadataType.DATE, dateScalar], [FieldMetadataType.DATE_TIME, dateScalar],
[FieldMetadataType.BOOLEAN, GraphQLBoolean], [FieldMetadataType.BOOLEAN, GraphQLBoolean],
[FieldMetadataType.NUMBER, numberScalar], [FieldMetadataType.NUMBER, numberScalar],
[FieldMetadataType.PROBABILITY, GraphQLFloat], [FieldMetadataType.PROBABILITY, GraphQLFloat],
@ -87,7 +87,7 @@ export class TypeMapperService {
[FieldMetadataType.TEXT, StringFilterType], [FieldMetadataType.TEXT, StringFilterType],
[FieldMetadataType.PHONE, StringFilterType], [FieldMetadataType.PHONE, StringFilterType],
[FieldMetadataType.EMAIL, StringFilterType], [FieldMetadataType.EMAIL, StringFilterType],
[FieldMetadataType.DATE, dateFilter], [FieldMetadataType.DATE_TIME, dateFilter],
[FieldMetadataType.BOOLEAN, BooleanFilterType], [FieldMetadataType.BOOLEAN, BooleanFilterType],
[FieldMetadataType.NUMBER, numberScalar], [FieldMetadataType.NUMBER, numberScalar],
[FieldMetadataType.PROBABILITY, FloatFilterType], [FieldMetadataType.PROBABILITY, FloatFilterType],
@ -106,7 +106,7 @@ export class TypeMapperService {
[FieldMetadataType.TEXT, OrderByDirectionType], [FieldMetadataType.TEXT, OrderByDirectionType],
[FieldMetadataType.PHONE, OrderByDirectionType], [FieldMetadataType.PHONE, OrderByDirectionType],
[FieldMetadataType.EMAIL, OrderByDirectionType], [FieldMetadataType.EMAIL, OrderByDirectionType],
[FieldMetadataType.DATE, OrderByDirectionType], [FieldMetadataType.DATE_TIME, OrderByDirectionType],
[FieldMetadataType.BOOLEAN, OrderByDirectionType], [FieldMetadataType.BOOLEAN, OrderByDirectionType],
[FieldMetadataType.NUMBER, OrderByDirectionType], [FieldMetadataType.NUMBER, OrderByDirectionType],
[FieldMetadataType.PROBABILITY, OrderByDirectionType], [FieldMetadataType.PROBABILITY, OrderByDirectionType],

View File

@ -4,7 +4,7 @@ import { getFieldMetadataType } from 'src/workspace/workspace-schema-builder/uti
describe('getFieldMetadataType', () => { describe('getFieldMetadataType', () => {
it.each([ it.each([
['uuid', FieldMetadataType.UUID], ['uuid', FieldMetadataType.UUID],
['timestamp', FieldMetadataType.DATE], ['timestamp', FieldMetadataType.DATE_TIME],
])( ])(
'should return correct FieldMetadataType for type %s', 'should return correct FieldMetadataType for type %s',
(type, expectedMetadataType) => { (type, expectedMetadataType) => {

View File

@ -2,7 +2,7 @@ import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.en
const typeOrmTypeMapping = new Map<string, FieldMetadataType>([ const typeOrmTypeMapping = new Map<string, FieldMetadataType>([
['uuid', FieldMetadataType.UUID], ['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 // Add more types here if we need to support more than id, and createdAt/updatedAt/deletedAt
]); ]);