mirror of
https://github.com/pieartsy/PluralFlux.git
synced 2026-04-18 13:35:28 +10:00
* rearranged update member field and remove member to match expected structure in typeORM * update docstring * change insert to save in memberRepo * added command in package.json --------- Co-authored-by: Aster Fialla <asterfialla@gmail.com>
74 lines
2.4 KiB
JavaScript
74 lines
2.4 KiB
JavaScript
const Member = require("../../database/entity/Member");
|
|
const { AppDataSource } = require("../../database/data-source");
|
|
const {ILike} = require("typeorm");
|
|
const members = AppDataSource.getRepository(Member.Member)
|
|
|
|
const memberRepo = {};
|
|
/**
|
|
* Gets a member based on the author and proxy tag.
|
|
*
|
|
* @async
|
|
* @param {string} authorId - The author of the message.
|
|
* @param {string} memberName - The member's name.
|
|
* @returns {Promise<Member | null>} The member object or null if not found.
|
|
*/
|
|
memberRepo.getMemberByName = async function (authorId, memberName) {
|
|
return await members.findOne({where: {userid: authorId, name: ILike(memberName)}});
|
|
}
|
|
|
|
/**
|
|
* Gets all members belonging to the author.
|
|
*
|
|
* @async
|
|
* @param {string} authorId - The author of the message
|
|
* @returns {Promise<Member[]>} The member object array.
|
|
*/
|
|
memberRepo.getMembersByAuthor = async function (authorId) {
|
|
return await members.findBy({userid: authorId});
|
|
}
|
|
|
|
/**
|
|
* Removes a member.
|
|
*
|
|
* @async
|
|
* @param {string} authorId - The author of the message
|
|
* @param {string} memberName - The name of the member to remove
|
|
* @returns {Promise<number>} Number of results removed.
|
|
*/
|
|
memberRepo.removeMember = async function (authorId, memberName) {
|
|
const deleted = await members.delete({ name: ILike(memberName), userid: authorId })
|
|
return deleted.affected;
|
|
}
|
|
|
|
/**
|
|
* Adds a member with full details.
|
|
*
|
|
* @async
|
|
* @param {{name: string, userid: string, displayname: (string|null), proxy: (string|null), propic: (string|null)}} createObj - Object with parameters in it
|
|
* @returns {Promise<Member>} A successful inserted object.
|
|
*/
|
|
memberRepo.createMember = async function (createObj) {
|
|
return await members.save({
|
|
name: createObj.name, userid: createObj.userid, displayname: createObj.displayname, proxy: createObj.proxy, propic: createObj.propic
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Updates one fields for a member in the database.
|
|
*
|
|
* @async
|
|
* @param {string} authorId - The author of the message
|
|
* @param {string} memberName - The member to update
|
|
* @param {string} columnName - The column name to update.
|
|
* @param {string} value - The value to update to.
|
|
* @returns {Promise<number>} A successful update.
|
|
*/
|
|
memberRepo.updateMemberField = async function (authorId, memberName, columnName, value) {
|
|
const updated = await members.update({
|
|
name: ILike(memberName),
|
|
userid: authorId
|
|
}, {[columnName]: value})
|
|
return updated.affected;
|
|
}
|
|
|
|
module.exports.memberRepo = memberRepo; |