Fixed 267U.pre2
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
import { db } from "../../db/postgre.js";
|
||||
import { Bite } from "../entities/bite.js";
|
||||
import { Bites, Notes, Users } from "../index.js";
|
||||
import { awaitAll } from "../../prelude/await-all.js";
|
||||
import config from "../../config/index.js";
|
||||
export const BiteRespository = db.getRepository(Bite).extend({
|
||||
targetType (bite) {
|
||||
if (bite.targetUserId) return "user";
|
||||
if (bite.targetBiteId) return "bite";
|
||||
return "note";
|
||||
},
|
||||
async pack (src, me) {
|
||||
const bite = typeof src === "object" ? src : await this.findOneByOrFail({
|
||||
id: src
|
||||
});
|
||||
return await awaitAll({
|
||||
id: bite.id,
|
||||
user: Users.pack(bite.user ?? bite.userId, me, {
|
||||
detail: false
|
||||
}),
|
||||
targetType: BiteRespository.targetType(bite),
|
||||
target: this.packTarget(bite, me),
|
||||
replied: bite.replied
|
||||
});
|
||||
},
|
||||
async packTarget (bite, me) {
|
||||
switch(BiteRespository.targetType(bite)){
|
||||
case "user":
|
||||
return await Users.pack(bite.targetUser ?? bite.targetUserId, me, {
|
||||
detail: false
|
||||
});
|
||||
case "bite":
|
||||
return await this.pack(bite.targetBite ?? bite.targetBiteId, me);
|
||||
case "note":
|
||||
return await Notes.pack(bite.targetNote ?? bite.targetNoteId, me, {
|
||||
detail: false
|
||||
});
|
||||
}
|
||||
},
|
||||
async targetUri (bite) {
|
||||
switch(BiteRespository.targetType(bite)){
|
||||
case "user":
|
||||
{
|
||||
bite.targetUser = bite.targetUser ?? await Users.findOneOrFail({
|
||||
where: {
|
||||
id: bite.targetUserId
|
||||
}
|
||||
});
|
||||
return bite.targetUser.uri ?? `${config.url}/users/${bite.targetUserId}`;
|
||||
}
|
||||
case "bite":
|
||||
{
|
||||
bite.targetBite = bite.targetBite ?? await Bites.findOneOrFail({
|
||||
where: {
|
||||
id: bite.targetBiteId
|
||||
}
|
||||
});
|
||||
return bite.targetBite.uri ?? `${config.url}/bites/${bite.targetBiteId}`;
|
||||
}
|
||||
case "note":
|
||||
{
|
||||
bite.targetNote = bite.targetNote ?? await Notes.findOneOrFail({
|
||||
where: {
|
||||
id: bite.targetNoteId
|
||||
}
|
||||
});
|
||||
return bite.targetNote.uri ?? `${config.url}/notes/${bite.targetBiteId}`;
|
||||
}
|
||||
}
|
||||
},
|
||||
async targetUserUri (bite) {
|
||||
switch(BiteRespository.targetType(bite)){
|
||||
case "user":
|
||||
if (!bite.targetUser) bite.targetUser = await Users.findOneByOrFail({
|
||||
id: bite.targetUserId
|
||||
});
|
||||
return bite.targetUser.uri ?? `${config.url}/users/${bite.targetUserId}`;
|
||||
case "bite":
|
||||
bite.targetBite = bite.targetBite ?? await Bites.findOneOrFail({
|
||||
where: {
|
||||
id: bite.targetBiteId
|
||||
},
|
||||
relations: [
|
||||
"user"
|
||||
]
|
||||
});
|
||||
bite.targetBite.user = bite.targetBite.user ?? await Users.findOneByOrFail({
|
||||
id: bite.targetBite.userId
|
||||
});
|
||||
return bite.targetBite.user.uri ?? `${config.url}/users/${bite.targetBite.userId}`;
|
||||
case "note":
|
||||
bite.targetNote = bite.targetNote ?? await Notes.findOneOrFail({
|
||||
where: {
|
||||
id: bite.targetNoteId
|
||||
},
|
||||
relations: [
|
||||
"user"
|
||||
]
|
||||
});
|
||||
bite.targetNote.user = bite.targetNote.user ?? await Users.findOneByOrFail({
|
||||
id: bite.targetNote.userId
|
||||
});
|
||||
return bite.targetNote.user.uri ?? `${config.url}/users/${bite.targetNote.userId}`;
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user