Entries Governor
import { entriesGovernor } from 'tods-competition-factory';
addDrawEntries
Bulk add an array of participantIds to a specific stage of a draw with a specific entryStatus. Will fail if participantIds are not already present in event.entries. Use addEventEntries to add to both event and drawDefinition at the same time.
engine.addDrawEntries({
suppressDuplicateEntries, // do not throw error on duplicates; instead notify to DATA_ISSUE subscribers
ignoreStageSpace, // optional boolean to disable checking available positions
entryStageSequence, // optional - applies to qualifying
autoEntryPositions, // optional - keeps entries ordered by entryStage/entryStatus and auto-increments
entryStatus: ALTERNATE, // optional
entryStage: MAIN, // optional
participantIds,
eventId,
drawId,
});
addEventEntries
Adds participantIds to event.entries; optionally pass drawId to add participantIds to flightProfile.flight[].drawEntries at the same time. See examples in Tournament Entry Filters, Adding Entries, Complete Example.
Supports optional validation of participant eligibility against event category constraints (age ranges, rating requirements).
Will not throw an error if unable to add entries into specified flightProfile.flight[].drawEntries,
which can occur if a drawDefinition has already been generated and an attempt is made to add
a participant with entryStatus: DIRECT_ACCEPTANCE.
engine.addEventEntries({
suppressDuplicateEntries, // do not throw error on duplicates; instead notify to DATA_ISSUE subscribers
entryStatus: ALTERNATE, // optional; defaults to DIRECT_ACCEPTANCE
entryStage: MAIN, // optional; defaults to MAIN
autoEntryPositions, // optional - keeps entries ordered by entryStage/entryStatus and auto-increments
enforceCategory, // optional - validate against event category (age/rating); defaults to false
enforceGender, // optional - validate gender; defaults to true
participantIds,
eventId,
drawId, // optional - will add participantIds to specified flightProfile.flight[].drawEntries and drawDefinition.entries (if possible)
});
Category Validation
When enforceCategory: true, validates participants against event category constraints:
Age Validation:
- Participant must be valid throughout entire event period (start to end date)
- Requires
person.birthDateif age restrictions exist - Combined age categories (e.g.,
C50-70) are automatically skipped for individuals
Rating Validation:
- Participant must have rating matching
category.ratingType - Rating value must fall within
ratingMin/ratingMaxrange - Uses most recent rating from participant's scale items
Rejection Response:
const result = engine.addEventEntries({
participantIds: ['player1', 'player2', 'player3'],
enforceCategory: true,
eventId,
});
if (result.error) {
// result.context.categoryRejections contains detailed rejection information
result.context.categoryRejections.forEach((rejection) => {
console.log(`${rejection.participantName}:`);
rejection.rejectionReasons.forEach((reason) => {
console.log(` - ${reason.reason}`);
console.log(` Details:`, reason.details);
});
});
}
See: Entries - Category Validation for comprehensive documentation and examples.