pg-structure / M2ORelation
# Class: M2ORelation
Class which represent many to one relationship which resembles belongsTo
relation in ORMs (Object Relational Mappers).
Provides attributes and methods for details of the relationship.
Actually there is no many to one relation in database engine. It is basically one to many relation in reverse direction.
Below is a database schema as an example:
Some definitions used in descriptions for M2ORelation.
- ** Source Table: ** Table which this relationship belongs to.
- ** Target Table: ** Table that is related to base table.
# Example
// Example tables have single primary key and examples first relation. So zero index ([0]) is used. Use all array elements if necessary.
// line_item >---- product
// (source) (target)
const relation = line_item.m2oRelations[0]; // RELATION: line_item >---- product
const foreignKey = relation.foreignKey; // CONSTRAINT: ^-- product_has_carts
const sourceTable = relation.sourceTable; // TABLE: line_item
const targetTable = relation.targetTable; // TABLE: product
const FKColumn = relation.foreignKey.columns[0]; // COLUMN: product_id (from line_item table)
const PKColumn = relation.targetTable.primaryKeys[0]; // COLUMN: id (from product table)
# Hierarchy
-
↳ M2ORelation
# Properties
# foreignKey
• foreignKey: ForeignKey
Foreign key between source table and target table.
# Example
const relation = product.M2ORelationRelations[0]; // RELATION: line_item >---- product
const foreignKey = relation.foreignKey; // CONSTRAINT: ^-- product_has_carts
const FKColumn = relation.foreignKey.columns[0]; // COLUMN: product_id (from line_item table)
Defined in: pg-structure/relation/m2o-relation.ts:118
# toMany
• Readonly
toMany: boolean= false
Whether the relation targets to many. Since, many to one relations targets single, this is true
.
Defined in: pg-structure/relation/m2o-relation.ts:55
# type
• Readonly
type: M2O
Type of the relation, which is m2o
for M2ORelation.
For TypeScript it is enum of RelationType.M2O
.
Defined in: pg-structure/relation/m2o-relation.ts:50
# Accessors
# info
• get info(): string
Informational text representation of the relation.
# Example
const info = relation.info; // [public.cart] ⭃―― cart_contact ―――[public.contact]
Returns: string
Defined in: pg-structure/relation/m2o-relation.ts:84
# name
• get name(): string
Suggested name for relation.
see
{@link ../relation-names.md Relation Names}
Returns: string
Defined in: pg-structure/relation/m2o-relation.ts:63
# sourceAdjective
• get sourceAdjective(): undefined | string
Source table's adjective extracted from foreign key name.
Returns: undefined | string
Defined in: pg-structure/base/relation.ts:86
# sourceAlias
• get sourceAlias(): string
Source table alias
Returns: string
Defined in: pg-structure/relation/m2o-relation.ts:141
# sourceName
• get sourceName(): string
Source table name.
Returns: string
Defined in: pg-structure/base/relation.ts:76
# sourceTable
• get sourceTable(): Table
Table which this relation belongs to.
# Example
const relation = product.M2ORelationRelations[0]; // RELATION: line_item >---- product
const sourceTable = relation.sourceTable; // TABLE: line_item
Returns: Table
Defined in: pg-structure/relation/m2o-relation.ts:95
# targetAdjective
• get targetAdjective(): undefined | string
Source table's adjective extracted from foreign key name.
Returns: undefined | string
Defined in: pg-structure/base/relation.ts:91
# targetAlias
• get targetAlias(): string
Target table alias
Returns: string
Defined in: pg-structure/relation/m2o-relation.ts:146
# targetName
• get targetName(): string
Target table name
Returns: string
Defined in: pg-structure/base/relation.ts:81
# targetTable
• get targetTable(): Table
Table which this relation is referred by.
# Example
const relation = product.M2ORelationRelations[0]; // RELATION: line_item >---- product
const targetTable = relation.targetTable; // TABLE: product
Returns: Table
Defined in: pg-structure/relation/m2o-relation.ts:106
# Methods
# getName
▸ getName(relationNameFunctions
: string | RelationNameFunctions): string
Returns name for the relation using given naming function.
# Parameters:
Name | Type | Description |
---|---|---|
relationNameFunctions | string | RelationNameFunctions | are custom functions or name of the module that exports relation name functions to generate names with. pg-structure provides some builtin modules (short , optimal and descriptive ), but you can use your own. |
Returns: string
name for the relation using naming function.
Defined in: pg-structure/relation/m2o-relation.ts:74
# getSourceAliasWithout
▸ getSourceAliasWithout(without
: any | source | target | RelationWithout[]): string
Returns source table alias after replacing given tables' names from it.
# Parameters:
Name | Type | Description |
---|---|---|
without | any | source | target | RelationWithout[] | is type or types of tables to exclude names of. |
Returns: string
source table alias after given tables' names replaced.
Defined in: pg-structure/relation/m2o-relation.ts:126
# getSourceNameWithout
▸ getSourceNameWithout(without
: any | source | target | RelationWithout[]): string
Returns source table name after replacing given tables' names from it.
# Parameters:
Name | Type | Description |
---|---|---|
without | any | source | target | RelationWithout[] | is type or types of tables to exclude names of. |
Returns: string
source table name after given tables' names replaced.
Inherited from: Relation
Defined in: pg-structure/base/relation.ts:61
# getTargetAliasWithout
▸ getTargetAliasWithout(without
: any | source | target | RelationWithout[]): string
Returns target table alias after replacing given tables' names from it.
# Parameters:
Name | Type | Description |
---|---|---|
without | any | source | target | RelationWithout[] | is type or types of tables to exclude names of. |
Returns: string
target table alias after given tables' names replaced.
Defined in: pg-structure/relation/m2o-relation.ts:136
# getTargetNameWithout
▸ getTargetNameWithout(without
: any | source | target | RelationWithout[]): string
Returns target table name after replacing given tables' names from it.
# Parameters:
Name | Type | Description |
---|---|---|
without | any | source | target | RelationWithout[] | is type or types of tables to exclude names of. |
Returns: string
target table name after given tables' names replaced.
Inherited from: Relation
Defined in: pg-structure/base/relation.ts:71