Skip to content

Commit

Permalink
fix(sequelize): fix column name selection for belongsTo relation
Browse files Browse the repository at this point in the history
Resolves: loopbackio#9591

Signed-off-by: KalleV <kvirtaneva@gmail.com>

test(sequelize): replicate duplicate column error with Sequelize belongsTo

Relates to:
 - loopbackio#9617
 - sourcefuse/loopback4-sequelize#35
  • Loading branch information
KalleV committed Sep 4, 2023
1 parent b77f5f0 commit cd8eaa6
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {Entity, model, property} from '@loopback/repository';
import {Entity, belongsTo, model, property} from '@loopback/repository';
import {Patient} from './patient.model';

@model()
export class Appointment extends Entity {
Expand All @@ -14,9 +15,13 @@ export class Appointment extends Entity {
})
doctorId?: number;

@property({
type: 'number',
})
@belongsTo(
() => Patient,
{keyTo: 'id', name: 'patient'},
{
type: 'number',
},
)
patientId?: number;

constructor(data?: Partial<Appointment>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -700,11 +700,13 @@ export class SequelizeCrudRepository<
entityClass.definition.relations[key].type ===
LoopbackRelationType.belongsTo
) {
const foreignKey = (
entityClass.definition.relations[key] as BelongsToDefinition
).keyTo;
const relation = entityClass.definition.relations[key] as BelongsToDefinition;
const foreignKey = relation.keyFrom;
const targetKey = relation.keyTo;

sourceModel.belongsTo(targetModel, {
foreignKey: {name: foreignKey},
targetKey,

// Which client will pass on in loopback style include filter, eg. `include: ["thisName"]`
as: entityClass.definition.relations[key].name,
Expand Down

0 comments on commit cd8eaa6

Please sign in to comment.