dataloader

package
v0.0.0-...-a0cf74a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 22, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Middleware

func Middleware(loaders *Loaders, next http.Handler) http.Handler

Middleware injects a DataLoader into the request context, so it can be used later in the schema resolvers

Types

type Loaders

type Loaders struct {
	// tags
	TagsForOrganization *dataloader.Loader
	TagsForContact      *dataloader.Loader
	TagsForIssue        *dataloader.Loader
	TagsForLogEntry     *dataloader.Loader
	// emails
	EmailsForContact       *dataloader.Loader
	EmailsForOrganization  *dataloader.Loader
	PrimaryEmailForContact *dataloader.Loader

	LocationsForContact                         *dataloader.Loader
	LocationsForOrganization                    *dataloader.Loader
	JobRolesForContact                          *dataloader.Loader
	JobRolesForOrganization                     *dataloader.Loader
	JobRolesForUser                             *dataloader.Loader
	CalendarsForUser                            *dataloader.Loader
	DomainsForOrganization                      *dataloader.Loader
	InteractionEventsForInteractionSession      *dataloader.Loader
	InteractionSessionForInteractionEvent       *dataloader.Loader
	SentByParticipantsForInteractionEvent       *dataloader.Loader
	SentToParticipantsForInteractionEvent       *dataloader.Loader
	AttendedByParticipantsForInteractionSession *dataloader.Loader
	ReplyToInteractionEventForInteractionEvent  *dataloader.Loader
	PhoneNumbersForOrganization                 *dataloader.Loader
	PhoneNumbersForUser                         *dataloader.Loader
	PhoneNumbersForContact                      *dataloader.Loader
	UsersConnectedForContact                    *dataloader.Loader
	UsersForEmail                               *dataloader.Loader
	UsersForPhoneNumber                         *dataloader.Loader
	UserOwnerForOrganization                    *dataloader.Loader
	UserOwnerForOpportunity                     *dataloader.Loader
	UserCreatorForOpportunity                   *dataloader.Loader
	UserCreatorForServiceLineItem               *dataloader.Loader
	UserCreatorForContract                      *dataloader.Loader
	UserAuthorForLogEntry                       *dataloader.Loader
	UserAuthorForComment                        *dataloader.Loader
	UserForFlowSender                           *dataloader.Loader
	User                                        *dataloader.Loader
	ContactsForEmail                            *dataloader.Loader
	ContactsForPhoneNumber                      *dataloader.Loader
	ContactCountForOrganization                 *dataloader.Loader
	Organization                                *dataloader.Loader
	OrganizationsForEmail                       *dataloader.Loader
	OrganizationsForPhoneNumber                 *dataloader.Loader
	SubsidiariesForOrganization                 *dataloader.Loader
	SubsidiariesOfForOrganization               *dataloader.Loader
	SuggestedMergeToForOrganization             *dataloader.Loader
	DescribedByFor                              *dataloader.Loader
	CreatedByParticipantsForMeeting             *dataloader.Loader
	AttendedByParticipantsForMeeting            *dataloader.Loader
	InteractionEventsForMeeting                 *dataloader.Loader
	InteractionEventsForIssue                   *dataloader.Loader
	CommentsForIssue                            *dataloader.Loader
	NotesForMeeting                             *dataloader.Loader
	AttachmentsForInteractionEvent              *dataloader.Loader
	AttachmentsForMeeting                       *dataloader.Loader
	AttachmentsForContract                      *dataloader.Loader
	SocialsForContact                           *dataloader.Loader
	SocialsForOrganization                      *dataloader.Loader
	ExternalSystemsForComment                   *dataloader.Loader
	ExternalSystemsForIssue                     *dataloader.Loader
	ExternalSystemsForOrganization              *dataloader.Loader
	ExternalSystemsForLogEntry                  *dataloader.Loader
	ExternalSystemsForMeeting                   *dataloader.Loader
	ExternalSystemsForInteractionEvent          *dataloader.Loader
	ExternalSystemsForContract                  *dataloader.Loader
	ExternalSystemsForOpportunity               *dataloader.Loader
	ExternalSystemsForServiceLineItem           *dataloader.Loader
	TimelineEventForTimelineEventId             *dataloader.Loader
	InboundCommsCountForOrganization            *dataloader.Loader
	OutboundCommsCountForOrganization           *dataloader.Loader
	OrganizationForJobRole                      *dataloader.Loader
	OrganizationForInvoice                      *dataloader.Loader
	OrganizationForOpportunity                  *dataloader.Loader
	OrganizationForSlackChannel                 *dataloader.Loader
	LatestOrganizationWithJobRoleForContact     *dataloader.Loader
	ContactForJobRole                           *dataloader.Loader
	IssueForInteractionEvent                    *dataloader.Loader
	MeetingForInteractionEvent                  *dataloader.Loader
	CountryForPhoneNumber                       *dataloader.Loader
	ActionsForInteractionEvent                  *dataloader.Loader
	ActionItemsForInteractionEvent              *dataloader.Loader
	SubmitterParticipantsForIssue               *dataloader.Loader
	ReporterParticipantsForIssue                *dataloader.Loader
	AssigneeParticipantsForIssue                *dataloader.Loader
	FollowerParticipantsForIssue                *dataloader.Loader
	ContractsForOrganization                    *dataloader.Loader
	ContractForInvoice                          *dataloader.Loader
	ServiceLineItemsForContract                 *dataloader.Loader
	ServiceLineItemForInvoiceLine               *dataloader.Loader
	OpportunitiesForContract                    *dataloader.Loader
	OpportunitiesForOrganization                *dataloader.Loader
	InvoiceLinesForInvoice                      *dataloader.Loader
	OrdersForOrganization                       *dataloader.Loader
	InvoicesForContract                         *dataloader.Loader
	FlowParticipantsForFlow                     *dataloader.Loader
	FlowActionsForFlow                          *dataloader.Loader
	FlowSendersForFlow                          *dataloader.Loader
	FlowsWithContact                            *dataloader.Loader
	FlowsWithSender                             *dataloader.Loader
	FlowExecutionsForParticipant                *dataloader.Loader
}

func For

func For(ctx context.Context) *Loaders

For returns the dataloader for a given context

func NewDataLoader

func NewDataLoader(services *service.Services) *Loaders

NewDataLoader returns the instantiated Loaders struct for use in a request

func (*Loaders) GetActionItemsForInteractionEvent

func (i *Loaders) GetActionItemsForInteractionEvent(ctx context.Context, interactionEventId string) (*entity.ActionItemEntities, error)

func (*Loaders) GetActionsForInteractionEvent

func (i *Loaders) GetActionsForInteractionEvent(ctx context.Context, interactionEventId string) (*neo4jentity.ActionEntities, error)

func (*Loaders) GetAssigneeParticipantsForIssue

func (i *Loaders) GetAssigneeParticipantsForIssue(ctx context.Context, issueId string) (*neo4jentity.IssueParticipants, error)

func (*Loaders) GetAttachmentsForContract

func (i *Loaders) GetAttachmentsForContract(ctx context.Context, contractId string) (*entity.AttachmentEntities, error)

func (*Loaders) GetAttachmentsForInteractionEvent

func (i *Loaders) GetAttachmentsForInteractionEvent(ctx context.Context, interactionEventId string) (*entity.AttachmentEntities, error)

func (*Loaders) GetAttachmentsForMeeting

func (i *Loaders) GetAttachmentsForMeeting(ctx context.Context, meetingId string) (*entity.AttachmentEntities, error)

func (*Loaders) GetAttendedByParticipantsForInteractionSession

func (i *Loaders) GetAttendedByParticipantsForInteractionSession(ctx context.Context, contactId string) (*neo4jentity.InteractionSessionParticipants, error)

func (*Loaders) GetAttendedByParticipantsForMeeting

func (i *Loaders) GetAttendedByParticipantsForMeeting(ctx context.Context, contactId string) (*neo4jentity.MeetingParticipants, error)

func (*Loaders) GetCalendarsForUser

func (i *Loaders) GetCalendarsForUser(ctx context.Context, userId string) (*entity.CalendarEntities, error)

func (*Loaders) GetCommentsForIssue

func (i *Loaders) GetCommentsForIssue(ctx context.Context, issueId string) (*neo4jentity.CommentEntities, error)

func (*Loaders) GetContactCountForOrganization

func (i *Loaders) GetContactCountForOrganization(ctx context.Context, organizationId string) (int64, error)

func (*Loaders) GetContactForJobRole

func (i *Loaders) GetContactForJobRole(ctx context.Context, jobRoleId string) (*neo4jentity.ContactEntity, error)

func (*Loaders) GetContactsForEmail

func (i *Loaders) GetContactsForEmail(ctx context.Context, emailId string) (*neo4jentity.ContactEntities, error)

func (*Loaders) GetContactsForPhoneNumber

func (i *Loaders) GetContactsForPhoneNumber(ctx context.Context, phoneNumberId string) (*neo4jentity.ContactEntities, error)

func (*Loaders) GetContractForInvoice

func (i *Loaders) GetContractForInvoice(ctx context.Context, invoiceId string) (*neo4jentity.ContractEntity, error)

func (*Loaders) GetContractsForOrganization

func (i *Loaders) GetContractsForOrganization(ctx context.Context, organizationId string) (*neo4jentity.ContractEntities, error)

func (*Loaders) GetCountryForPhoneNumber

func (i *Loaders) GetCountryForPhoneNumber(ctx context.Context, phoneNumberId string) (*entity.CountryEntity, error)

func (*Loaders) GetCreatedByParticipantsForMeeting

func (i *Loaders) GetCreatedByParticipantsForMeeting(ctx context.Context, contactId string) (*neo4jentity.MeetingParticipants, error)

func (*Loaders) GetDomainsForOrganization

func (i *Loaders) GetDomainsForOrganization(ctx context.Context, organizationId string) (*neo4jentity.DomainEntities, error)

func (*Loaders) GetEmailsForContact

func (i *Loaders) GetEmailsForContact(ctx context.Context, contactId string) (*neo4jentity.EmailEntities, error)

func (*Loaders) GetEmailsForOrganization

func (i *Loaders) GetEmailsForOrganization(ctx context.Context, organizationId string) (*neo4jentity.EmailEntities, error)

func (*Loaders) GetExecutionsForParticipant

func (i *Loaders) GetExecutionsForParticipant(ctx context.Context, participantId string) (*neo4jentity.FlowActionExecutionEntities, error)

func (*Loaders) GetExternalSystemsForComment

func (i *Loaders) GetExternalSystemsForComment(ctx context.Context, commentId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForContract

func (i *Loaders) GetExternalSystemsForContract(ctx context.Context, contractId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForInteractionEvent

func (i *Loaders) GetExternalSystemsForInteractionEvent(ctx context.Context, ieId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForIssue

func (i *Loaders) GetExternalSystemsForIssue(ctx context.Context, issueId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForLogEntry

func (i *Loaders) GetExternalSystemsForLogEntry(ctx context.Context, logEntryId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForMeeting

func (i *Loaders) GetExternalSystemsForMeeting(ctx context.Context, meetingId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForOpportunity

func (i *Loaders) GetExternalSystemsForOpportunity(ctx context.Context, opportunityId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForOrganization

func (i *Loaders) GetExternalSystemsForOrganization(ctx context.Context, organizationId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetExternalSystemsForServiceLineItem

func (i *Loaders) GetExternalSystemsForServiceLineItem(ctx context.Context, serviceLineItemId string) (*neo4jentity.ExternalSystemEntities, error)

func (*Loaders) GetFlowActionsForFlow

func (i *Loaders) GetFlowActionsForFlow(ctx context.Context, flowId string) (*neo4jentity.FlowActionEntities, error)

func (*Loaders) GetFlowParticipantsForFlow

func (i *Loaders) GetFlowParticipantsForFlow(ctx context.Context, flowId string) (*neo4jentity.FlowParticipantEntities, error)

func (*Loaders) GetFlowSendersForFlow

func (i *Loaders) GetFlowSendersForFlow(ctx context.Context, actionId string) (*neo4jentity.FlowSenderEntities, error)

func (*Loaders) GetFlowsWithContact

func (i *Loaders) GetFlowsWithContact(ctx context.Context, contactId string) (*neo4jentity.FlowEntities, error)

func (*Loaders) GetFlowsWithSender

func (i *Loaders) GetFlowsWithSender(ctx context.Context, senderId string) (*neo4jentity.FlowEntities, error)

func (*Loaders) GetFollowerParticipantsForIssue

func (i *Loaders) GetFollowerParticipantsForIssue(ctx context.Context, issueId string) (*neo4jentity.IssueParticipants, error)

func (*Loaders) GetInboundCommsCountForOrganization

func (i *Loaders) GetInboundCommsCountForOrganization(ctx context.Context, organizationId string) (int64, error)

func (*Loaders) GetInteractionEventsForInteractionEvent

func (i *Loaders) GetInteractionEventsForInteractionEvent(ctx context.Context, interactionEventId string) (*neo4jentity.InteractionEventEntities, error)

func (*Loaders) GetInteractionEventsForInteractionSession

func (i *Loaders) GetInteractionEventsForInteractionSession(ctx context.Context, interactionSessionId string) (*neo4jentity.InteractionEventEntities, error)

func (*Loaders) GetInteractionEventsForIssue

func (i *Loaders) GetInteractionEventsForIssue(ctx context.Context, issueId string) (*neo4jentity.InteractionEventEntities, error)

func (*Loaders) GetInteractionEventsForMeeting

func (i *Loaders) GetInteractionEventsForMeeting(ctx context.Context, meetingId string) (*neo4jentity.InteractionEventEntities, error)

func (*Loaders) GetInteractionSessionForInteractionEvent

func (i *Loaders) GetInteractionSessionForInteractionEvent(ctx context.Context, interactionEventId string) (*neo4jentity.InteractionSessionEntity, error)

func (*Loaders) GetInvoiceLinesForInvoice

func (i *Loaders) GetInvoiceLinesForInvoice(ctx context.Context, invoiceId string) (*neo4jentity.InvoiceLineEntities, error)

func (*Loaders) GetInvoicesForContract

func (i *Loaders) GetInvoicesForContract(ctx context.Context, contractId string) (*neo4jentity.InvoiceEntities, error)

func (*Loaders) GetIssueForInteractionEvent

func (i *Loaders) GetIssueForInteractionEvent(ctx context.Context, interactionEventId string) (*entity.IssueEntity, error)

func (*Loaders) GetJobRolesForContact

func (i *Loaders) GetJobRolesForContact(ctx context.Context, contactId string) (*neo4jentity.JobRoleEntities, error)

func (*Loaders) GetJobRolesForOrganization

func (i *Loaders) GetJobRolesForOrganization(ctx context.Context, organizationId string) (*neo4jentity.JobRoleEntities, error)

func (*Loaders) GetJobRolesForUser

func (i *Loaders) GetJobRolesForUser(ctx context.Context, userId string) (*neo4jentity.JobRoleEntities, error)

func (*Loaders) GetLatestOrganizationWithJobRoleForContact

func (i *Loaders) GetLatestOrganizationWithJobRoleForContact(ctx context.Context, contactId string) (*neo4jentity.OrganizationWithJobRole, error)

func (*Loaders) GetLocationsForContact

func (i *Loaders) GetLocationsForContact(ctx context.Context, contactId string) (*neo4jentity.LocationEntities, error)

func (*Loaders) GetLocationsForOrganization

func (i *Loaders) GetLocationsForOrganization(ctx context.Context, organizationId string) (*neo4jentity.LocationEntities, error)

func (*Loaders) GetMeetingForInteractionEvent

func (i *Loaders) GetMeetingForInteractionEvent(ctx context.Context, interactionEventId string) (*entity.MeetingEntity, error)

func (*Loaders) GetNotesForMeeting

func (i *Loaders) GetNotesForMeeting(ctx context.Context, meetingId string) (*entity.NoteEntities, error)

func (*Loaders) GetOpportunitiesForContract

func (i *Loaders) GetOpportunitiesForContract(ctx context.Context, contractId string) (*neo4jentity.OpportunityEntities, error)

func (*Loaders) GetOpportunitiesForOrganization

func (i *Loaders) GetOpportunitiesForOrganization(ctx context.Context, orgId string) (*neo4jentity.OpportunityEntities, error)

func (*Loaders) GetOrganization

func (i *Loaders) GetOrganization(ctx context.Context, organizationId string) (*neo4jentity.OrganizationEntity, error)

func (*Loaders) GetOrganizationForInvoice

func (i *Loaders) GetOrganizationForInvoice(ctx context.Context, invoiceId string) (*neo4jentity.OrganizationEntity, error)

func (*Loaders) GetOrganizationForJobRole

func (i *Loaders) GetOrganizationForJobRole(ctx context.Context, jobRoleId string) (*neo4jentity.OrganizationEntity, error)

func (*Loaders) GetOrganizationForOpportunityOptional

func (i *Loaders) GetOrganizationForOpportunityOptional(ctx context.Context, opportunityId string) (*neo4jentity.OrganizationEntity, error)

func (*Loaders) GetOrganizationForSlackChannel

func (i *Loaders) GetOrganizationForSlackChannel(ctx context.Context, slackChannelId string) (*neo4jentity.OrganizationEntity, error)

func (*Loaders) GetOrganizationsForEmail

func (i *Loaders) GetOrganizationsForEmail(ctx context.Context, emailId string) (*neo4jentity.OrganizationEntities, error)

func (*Loaders) GetOrganizationsForPhoneNumber

func (i *Loaders) GetOrganizationsForPhoneNumber(ctx context.Context, phoneNumberId string) (*neo4jentity.OrganizationEntities, error)

func (*Loaders) GetOutboundCommsCountForOrganization

func (i *Loaders) GetOutboundCommsCountForOrganization(ctx context.Context, organizationId string) (int64, error)

func (*Loaders) GetPhoneNumbersForContact

func (i *Loaders) GetPhoneNumbersForContact(ctx context.Context, contactId string) (*neo4jentity.PhoneNumberEntities, error)

func (*Loaders) GetPhoneNumbersForOrganization

func (i *Loaders) GetPhoneNumbersForOrganization(ctx context.Context, organizationId string) (*neo4jentity.PhoneNumberEntities, error)

func (*Loaders) GetPhoneNumbersForUser

func (i *Loaders) GetPhoneNumbersForUser(ctx context.Context, userId string) (*neo4jentity.PhoneNumberEntities, error)

func (*Loaders) GetPrimaryEmailForContact

func (i *Loaders) GetPrimaryEmailForContact(ctx context.Context, contactId string) (*neo4jentity.EmailEntity, error)

func (*Loaders) GetReporterParticipantsForIssue

func (i *Loaders) GetReporterParticipantsForIssue(ctx context.Context, issueId string) (*neo4jentity.IssueParticipants, error)

func (*Loaders) GetSentByParticipantsForInteractionEvent

func (i *Loaders) GetSentByParticipantsForInteractionEvent(ctx context.Context, contactId string) (*neo4jentity.InteractionEventParticipants, error)

func (*Loaders) GetSentToParticipantsForInteractionEvent

func (i *Loaders) GetSentToParticipantsForInteractionEvent(ctx context.Context, organizationId string) (*neo4jentity.InteractionEventParticipants, error)

func (*Loaders) GetServiceLineItemForInvoiceLine

func (i *Loaders) GetServiceLineItemForInvoiceLine(ctx context.Context, invoiceLineId string) (*neo4jentity.ServiceLineItemEntity, error)

func (*Loaders) GetServiceLineItemsForContract

func (i *Loaders) GetServiceLineItemsForContract(ctx context.Context, contractId string) (*neo4jentity.ServiceLineItemEntities, error)

func (*Loaders) GetSocialsForContact

func (i *Loaders) GetSocialsForContact(ctx context.Context, contactId string) (*neo4jentity.SocialEntities, error)

func (*Loaders) GetSocialsForOrganization

func (i *Loaders) GetSocialsForOrganization(ctx context.Context, organizationId string) (*neo4jentity.SocialEntities, error)

func (*Loaders) GetSubmitterParticipantsForIssue

func (i *Loaders) GetSubmitterParticipantsForIssue(ctx context.Context, issueId string) (*neo4jentity.IssueParticipants, error)

func (*Loaders) GetSubsidiariesForOrganization

func (i *Loaders) GetSubsidiariesForOrganization(ctx context.Context, organizationId string) (*neo4jentity.OrganizationEntities, error)

func (*Loaders) GetSubsidiariesOfForOrganization

func (i *Loaders) GetSubsidiariesOfForOrganization(ctx context.Context, organizationId string) (*neo4jentity.OrganizationEntities, error)

func (*Loaders) GetSuggestedMergeToForOrganization

func (i *Loaders) GetSuggestedMergeToForOrganization(ctx context.Context, organizationId string) (*neo4jentity.OrganizationEntities, error)

func (*Loaders) GetTagsForContact

func (i *Loaders) GetTagsForContact(ctx context.Context, contactId string) (*neo4jentity.TagEntities, error)

func (*Loaders) GetTagsForIssue

func (i *Loaders) GetTagsForIssue(ctx context.Context, issueId string) (*neo4jentity.TagEntities, error)

func (*Loaders) GetTagsForLogEntry

func (i *Loaders) GetTagsForLogEntry(ctx context.Context, logEntryId string) (*neo4jentity.TagEntities, error)

func (*Loaders) GetTagsForOrganization

func (i *Loaders) GetTagsForOrganization(ctx context.Context, organizationId string) (*neo4jentity.TagEntities, error)

func (*Loaders) GetTimelineEventForTimelineEventId

func (i *Loaders) GetTimelineEventForTimelineEventId(ctx context.Context, timelineEventId string) (*entity.TimelineEvent, error)

func (*Loaders) GetUser

func (i *Loaders) GetUser(ctx context.Context, userId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserAuthorForComment

func (i *Loaders) GetUserAuthorForComment(ctx context.Context, logEntryId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserAuthorForLogEntry

func (i *Loaders) GetUserAuthorForLogEntry(ctx context.Context, logEntryId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserCreatorForContract

func (i *Loaders) GetUserCreatorForContract(ctx context.Context, contractId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserCreatorForOpportunity

func (i *Loaders) GetUserCreatorForOpportunity(ctx context.Context, opportunityId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserCreatorForServiceLineItem

func (i *Loaders) GetUserCreatorForServiceLineItem(ctx context.Context, serviceLineItemId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserForFlowSenders

func (i *Loaders) GetUserForFlowSenders(ctx context.Context, flowSenderId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserOwnerForOpportunity

func (i *Loaders) GetUserOwnerForOpportunity(ctx context.Context, opportunityId string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUserOwnerForOrganization

func (i *Loaders) GetUserOwnerForOrganization(ctx context.Context, organizationID string) (*neo4jentity.UserEntity, error)

func (*Loaders) GetUsersConnectedForContact

func (i *Loaders) GetUsersConnectedForContact(ctx context.Context, contactId string) (*neo4jentity.UserEntities, error)

func (*Loaders) GetUsersForEmail

func (i *Loaders) GetUsersForEmail(ctx context.Context, emailID string) (*neo4jentity.UserEntities, error)

func (*Loaders) GetUsersForPhoneNumber

func (i *Loaders) GetUsersForPhoneNumber(ctx context.Context, phoneNumberID string) (*neo4jentity.UserEntities, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL