67 lines
No EOL
3.3 KiB
TypeScript
67 lines
No EOL
3.3 KiB
TypeScript
import UserBadge from "../entities/UserBadge";
|
|
import Database from "../objects/Database";
|
|
import RepoBase from "./RepoBase";
|
|
|
|
export default abstract class UserBadgeRepo {
|
|
public static async selectById(id:number) {
|
|
const dbUserBadge = await Database.Instance.query("SELECT * FROM UserBadge WHERE Id = ? AND IsDeleted = 0 LIMIT 1", [id]);
|
|
if (dbUserBadge == null || dbUserBadge.length === 0) {
|
|
return null;
|
|
} else {
|
|
const userBadge = new UserBadge();
|
|
populateUserBadgeFromDB(userBadge, dbUserBadge[0]);
|
|
return userBadge;
|
|
}
|
|
}
|
|
|
|
public static async selectByUserId(userId:number) {
|
|
const dbUserBadge = await Database.Instance.query("SELECT * FROM UserBadge WHERE UserId = ? AND IsDeleted = 0", [ userId ]);
|
|
const userBadges = new Array<UserBadge>();
|
|
|
|
for (const row of dbUserBadge) {
|
|
const userBadge = new UserBadge();
|
|
populateUserBadgeFromDB(userBadge, row);
|
|
userBadges.push(userBadge);
|
|
}
|
|
|
|
return userBadges;
|
|
}
|
|
|
|
public static async selectByUserIdBadgeId(userId:number, badgeId:number) {
|
|
const dbUserBadge = await Database.Instance.query("SELECT * FROM UserBadge WHERE UserId = ? AND BadgeId = ? AND IsDeleted = 0 LIMIT 1", [ userId, badgeId ]);
|
|
if (dbUserBadge == null || dbUserBadge.length === 0) {
|
|
return null;
|
|
} else {
|
|
const userBadge = new UserBadge();
|
|
populateUserBadgeFromDB(userBadge, dbUserBadge[0]);
|
|
return userBadge;
|
|
}
|
|
}
|
|
|
|
public static async insertUpdate(userBadge:UserBadge) {
|
|
if (userBadge.Id === Number.MIN_VALUE) {
|
|
userBadge.Id = (await Database.Instance.query("INSERT UserBadge (UserId, BadgeId, CreatedByUserId, CreatedDatetime, LastModifiedByUserId, LastModifiedDatetime, DeletedByUserId, DeletedDatetime, IsDeleted) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING Id;", [
|
|
userBadge.UserId, userBadge.BadgeId, userBadge.CreatedByUserId, userBadge.CreatedDatetime.getTime(), userBadge.LastModifiedByUserId ?? null, userBadge.LastModifiedDatetime?.getTime() ?? null, userBadge.DeletedByUserId ?? null, userBadge.DeletedDatetime?.getTime() ?? null, Number(userBadge.IsDeleted)
|
|
]))[0]["Id"];
|
|
} else {
|
|
await Database.Instance.query(`UPDATE UserBadge SET UserId = ?, BadgeId = ?, CreatedByUserId = ?, CreatedDatetime = ?, LastModifiedByUserId = ?, LastModifiedDatetime = ?, DeletedByUserId = ?, DeletedDatetime = ?, IsDeleted = ? WHERE Id = ?`, [
|
|
userBadge.UserId, userBadge.BadgeId, userBadge.CreatedByUserId, userBadge.CreatedDatetime.getTime(), userBadge.LastModifiedByUserId ?? null, userBadge.LastModifiedDatetime?.getTime() ?? null, userBadge.DeletedByUserId ?? null, userBadge.DeletedDatetime?.getTime() ?? null, Number(userBadge.IsDeleted), userBadge.Id
|
|
]);
|
|
}
|
|
|
|
return userBadge;
|
|
}
|
|
}
|
|
|
|
function populateUserBadgeFromDB(userBadge:UserBadge, dbUser:any) {
|
|
userBadge.Id = dbUser.Id;
|
|
userBadge.UserId = dbUser.UserId;
|
|
userBadge.BadgeId = dbUser.BadgeId;
|
|
userBadge.CreatedByUserId = dbUser.CreatedByUserId;
|
|
userBadge.CreatedDatetime = new Date(dbUser.CreatedDatetime);
|
|
userBadge.LastModifiedByUserId = dbUser.LastModifiedByUserId;
|
|
userBadge.LastModifiedDatetime = RepoBase.convertNullableDatetimeIntToDate(dbUser.LastModifiedDatetime);
|
|
userBadge.DeletedByUserId = dbUser.DeletedByUserId;
|
|
userBadge.DeletedDatetime = RepoBase.convertNullableDatetimeIntToDate(dbUser.DeletedDatetime);
|
|
userBadge.IsDeleted = dbUser.IsDeleted[0] === 1;
|
|
} |