Skip to main content

Class: VerseLinkRecord

Defined in: Data/Models/Common/VerseLinkRecord.ts:36

A row of the unified verse_link table (Module Format v2, WS-3).

CREATE TABLE verse_link (
link_id INTEGER PRIMARY KEY AUTOINCREMENT,
source_type TEXT NOT NULL,
source_id INTEGER NOT NULL,
verse_id_start INTEGER NOT NULL,
verse_id_end INTEGER, -- NULL = single verse
link_type TEXT NOT NULL DEFAULT 'reference',
sort_order INTEGER NOT NULL DEFAULT 0,
context TEXT,
metadata TEXT
);

This one table replaces the six legacy content→verse shapes: scripture_reference (book), JSON scripture_verses (devotional), JSON example_verses (dictionary), topic_verses (topical, with reversed column names), content_verse_link / note_verse_link / journal_verse_link (user). It is identical in every module database and in the user database.

Range convention: see the single normative statement in Core/Types.ts (search for "RANGE CONVENTION"). Do not rely on verseIdEnd === undefined being distinguishable from verseIdEnd === verseIdStart; use VerseLinkRecord.effectiveEnd.

Named VerseLinkRecord rather than VerseLink because the legacy note-scoped VerseLink interface (Models/User/UserNote) is still part of the published @bible/core surface and is consumed by @bible/desktop. Retiring that name is a Pass-2 follow-up.

Constructors

Constructor

new VerseLinkRecord(data): VerseLinkRecord

Defined in: Data/Models/Common/VerseLinkRecord.ts:50

Parameters

data
context?

string

linkId?

number

linkType?

"cross_reference" | "reference" | "annotation" | "primary_passage"

metadata?

Metadata

sortOrder?

number

sourceId

number

sourceType

"journal" | "prayer" | "verse" | "note" | "dictionary_entry" | "book_section" | "commentary_entry" | "devotional_entry" | "topic" | "cross_reference_group" | "entity_facet"

verseIdEnd?

number

verseIdStart

number

Returns

VerseLinkRecord

Properties

context?

optional context?: string

Defined in: Data/Models/Common/VerseLinkRecord.ts:47

Surrounding text/anchor phrase where the reference appears.


linkId?

optional linkId?: number

Defined in: Data/Models/Common/VerseLinkRecord.ts:37


linkType

linkType: "cross_reference" | "reference" | "annotation" | "primary_passage"

Defined in: Data/Models/Common/VerseLinkRecord.ts:44


metadata?

optional metadata?: Metadata

Defined in: Data/Models/Common/VerseLinkRecord.ts:48


sortOrder

sortOrder: number

Defined in: Data/Models/Common/VerseLinkRecord.ts:45


sourceId

sourceId: number

Defined in: Data/Models/Common/VerseLinkRecord.ts:39


sourceType

sourceType: "journal" | "prayer" | "verse" | "note" | "dictionary_entry" | "book_section" | "commentary_entry" | "devotional_entry" | "topic" | "cross_reference_group" | "entity_facet"

Defined in: Data/Models/Common/VerseLinkRecord.ts:38


verseIdEnd?

optional verseIdEnd?: number

Defined in: Data/Models/Common/VerseLinkRecord.ts:43

Inclusive end of the linked range; undefined for a single verse.


verseIdStart

verseIdStart: number

Defined in: Data/Models/Common/VerseLinkRecord.ts:41

Inclusive start of the linked verse range.

Methods

containsVerse()

containsVerse(verseId): boolean

Defined in: Data/Models/Common/VerseLinkRecord.ts:93

True when verseId falls inside the inclusive range.

Parameters

verseId

number

Returns

boolean


effectiveEnd()

effectiveEnd(): number

Defined in: Data/Models/Common/VerseLinkRecord.ts:83

Inclusive end of the range, defaulting to the start for single verses.

Returns

number


isRange()

isRange(): boolean

Defined in: Data/Models/Common/VerseLinkRecord.ts:78

True when the link spans more than one verse.

Returns

boolean


isSingleVerse()

isSingleVerse(): boolean

Defined in: Data/Models/Common/VerseLinkRecord.ts:73

True when the link targets exactly one verse.

Returns

boolean


verseCount()

verseCount(): number

Defined in: Data/Models/Common/VerseLinkRecord.ts:88

Number of verse IDs spanned (1 for a single verse).

Returns

number