Skip to content

Commit 584df48

Browse files
author
Ahmer Butt
committed
now supports using aliases for associations
1 parent 649788d commit 584df48

File tree

1 file changed

+31
-26
lines changed

1 file changed

+31
-26
lines changed

index.js

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,18 @@ const initArgParser = (ArgParserClass) => {
1515
)
1616

1717
parser.addArgument(
18-
[ '-a', '--associationName' ],
19-
{ help: 'array of name of associations', nargs: '+' },
18+
[ '-a', '--associationModelName' ],
19+
{ help: 'array of name of model of associations', nargs: '+' },
20+
);
21+
22+
parser.addArgument(
23+
[ '-s', '--singular' ],
24+
{ help: 'array of singular of alias names (the alias for association, may be same as associationModelName)', nargs: '+' }
2025
);
2126

2227
parser.addArgument(
2328
[ '-p', '--plural' ],
24-
{ help: 'array of plural of association names (if n/a then use _)', nargs: '+' },
29+
{ help: 'array of plural of alias names (if n/a then use _)', nargs: '+' },
2530
);
2631

2732
parser.addArgument(
@@ -38,15 +43,15 @@ const initArgParser = (ArgParserClass) => {
3843
}
3944

4045
// FIXME: this doesn't seem to work
41-
const assertArgLengthsAreTheSame = (args) => {
42-
["associationName", "plural", "type", "joinTable"].map(k => console.log(args[k].length));
43-
console.log(args.associationName.length === args.plural.length === args.type.length === args.joinTable.length);
44-
return args.associationName.length === args.plural.length === args.type.length === args.joinTable.length;
45-
};
46+
// const assertArgLengthsAreTheSame = (args) => {
47+
// ["associationModelName", "plural", "type", "joinTable"].map(k => console.log(args[k].length));
48+
// console.log(args.associationModelName.length === args.plural.length === args.type.length === args.joinTable.length);
49+
// return args.associationModelName.length === args.plural.length === args.type.length === args.joinTable.length;
50+
// };
4651

47-
const addMixinsBelongsTo = (singular) => {
48-
const AssocInstance = `${singular}Instance`;
49-
const AssocAttributes = `${singular}Attributes`;
52+
const addMixinsBelongsTo = (associationModelName, singular) => {
53+
const AssocInstance = `${associationModelName}Instance`;
54+
const AssocAttributes = `${associationModelName}Attributes`;
5055
return (
5156
`
5257
get${singular}: Sequelize.BelongsToGetAssociationMixin<${AssocInstance}>;
@@ -56,9 +61,9 @@ const addMixinsBelongsTo = (singular) => {
5661
);
5762
};
5863

59-
const addMixinsHasOne = (singular) => {
60-
const AssocInstance = `${singular}Instance`;
61-
const AssocAttributes = `${singular}Attributes`;
64+
const addMixinsHasOne = (associationModelName, singular) => {
65+
const AssocInstance = `${associationModelName}Instance`;
66+
const AssocAttributes = `${associationModelName}Attributes`;
6267
return (
6368
`
6469
get${singular}: Sequelize.HasOneGetAssociationMixin<${AssocInstance}>;
@@ -68,9 +73,9 @@ const addMixinsHasOne = (singular) => {
6873
);
6974
};
7075

71-
const addMixinsHasMany = (singular, plural) => {
72-
const AssocInstance = `${singular}Instance`;
73-
const AssocAttributes = `${singular}Attributes`;
76+
const addMixinsHasMany = (associationModelName, singular, plural) => {
77+
const AssocInstance = `${associationModelName}Instance`;
78+
const AssocAttributes = `${associationModelName}Attributes`;
7479
return (
7580
`
7681
get${plural}: Sequelize.HasManyGetAssociationsMixin<${AssocInstance}>;
@@ -87,9 +92,9 @@ const addMixinsHasMany = (singular, plural) => {
8792
);
8893
};
8994

90-
const addMixinsBelongsToMany = (singular, plural, joinTableName) => {
91-
const AssocInstance = `${singular}Instance`;
92-
const AssocAttributes = `${singular}Attributes`;
95+
const addMixinsBelongsToMany = (associationModelName, singular, plural, joinTableName) => {
96+
const AssocInstance = `${associationModelName}Instance`;
97+
const AssocAttributes = `${associationModelName}Attributes`;
9398
const JoinTableAttributes = joinTableName[0] === '\"' || joinTableName[0] === "\'"
9499
? joinTableName
95100
: `${joinTableName}Attributes`;
@@ -110,17 +115,17 @@ const addMixinsBelongsToMany = (singular, plural, joinTableName) => {
110115
);
111116
};
112117

113-
const generateInterface = ({ baseModelName, associationName, plural, type, joinTable }) => {
118+
const generateInterface = ({ baseModelName, associationModelName, singular, plural, type, joinTable }) => {
114119
let mixinsString = '';
115-
for (let i = 0; i < associationName.length; i++) {
120+
for (let i = 0; i < associationModelName.length; i++) {
116121
if (type[i] === "BelongsTo") {
117-
mixinsString += addMixinsBelongsTo(associationName[i]);
122+
mixinsString += addMixinsBelongsTo(associationModelName[i], singular[i]);
118123
} else if (type[i] === "HasOne") {
119-
mixinsString += addMixinsHasOne(associationName[i]);
124+
mixinsString += addMixinsHasOne(associationModelName[i], singular[i]);
120125
} else if (type[i] === "HasMany") {
121-
mixinsString += addMixinsHasMany(associationName[i], plural[i]);
126+
mixinsString += addMixinsHasMany(associationModelName[i], singular[i], plural[i]);
122127
} else if (type[i] === "BelongsToMany") {
123-
mixinsString += addMixinsBelongsToMany(associationName[i], plural[i], joinTable[i]);
128+
mixinsString += addMixinsBelongsToMany(associationModelName[i], singular[i], plural[i], joinTable[i]);
124129
} else {
125130
console.error("incorrect type: ", type[i]);
126131
return;

0 commit comments

Comments
 (0)