mirror of
https://codeberg.org/yeentown/barkey.git
synced 2025-07-07 12:36:57 +00:00
fix type errors from notes/versions endpoint
This commit is contained in:
parent
000b1f4fe2
commit
08b8d50124
2 changed files with 40 additions and 22 deletions
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Entity, JoinColumn, Column, ManyToOne, PrimaryColumn, Index } from "typeorm";
|
import { Entity, JoinColumn, Column, ManyToOne, PrimaryColumn, Index } from 'typeorm';
|
||||||
import { id } from './util/id.js';
|
import { id } from './util/id.js';
|
||||||
import { MiNote } from './Note.js';
|
import { MiNote } from './Note.js';
|
||||||
import type { MiDriveFile } from './DriveFile.js';
|
import type { MiDriveFile } from './DriveFile.js';
|
||||||
|
@ -16,27 +16,27 @@ export class NoteEdit {
|
||||||
@Index()
|
@Index()
|
||||||
@Column({
|
@Column({
|
||||||
...id(),
|
...id(),
|
||||||
comment: "The ID of note.",
|
comment: 'The ID of note.',
|
||||||
})
|
})
|
||||||
public noteId: MiNote["id"];
|
public noteId: MiNote['id'];
|
||||||
|
|
||||||
@ManyToOne((type) => MiNote, {
|
@ManyToOne(() => MiNote, {
|
||||||
onDelete: "CASCADE",
|
onDelete: 'CASCADE',
|
||||||
})
|
})
|
||||||
@JoinColumn()
|
@JoinColumn()
|
||||||
public note: MiNote | null;
|
public note: MiNote | null;
|
||||||
|
|
||||||
@Column("text", {
|
@Column('text', {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
})
|
})
|
||||||
public oldText: string | null;
|
public oldText: string | null;
|
||||||
|
|
||||||
@Column("text", {
|
@Column('text', {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
})
|
})
|
||||||
public newText: string | null;
|
public newText: string | null;
|
||||||
|
|
||||||
@Column("varchar", {
|
@Column('varchar', {
|
||||||
length: 512,
|
length: 512,
|
||||||
nullable: true,
|
nullable: true,
|
||||||
})
|
})
|
||||||
|
@ -45,17 +45,17 @@ export class NoteEdit {
|
||||||
@Column({
|
@Column({
|
||||||
...id(),
|
...id(),
|
||||||
array: true,
|
array: true,
|
||||||
default: "{}",
|
default: '{}',
|
||||||
})
|
})
|
||||||
public fileIds: MiDriveFile["id"][];
|
public fileIds: MiDriveFile['id'][];
|
||||||
|
|
||||||
@Column("timestamp with time zone", {
|
@Column('timestamp with time zone', {
|
||||||
comment: "The updated date of the Note.",
|
comment: 'The updated date of the Note.',
|
||||||
})
|
})
|
||||||
public updatedAt: Date;
|
public updatedAt: Date;
|
||||||
|
|
||||||
@Column("timestamp with time zone", {
|
@Column('timestamp with time zone', {
|
||||||
comment: "The old date from before the edit",
|
comment: 'The old date from before the edit',
|
||||||
})
|
})
|
||||||
public oldDate: Date;
|
public oldDate: Date;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,25 @@ export const meta = {
|
||||||
requireCredential: false,
|
requireCredential: false,
|
||||||
|
|
||||||
res: {
|
res: {
|
||||||
|
type: 'array',
|
||||||
|
items: {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: false,
|
||||||
|
properties: {
|
||||||
|
oldDate: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false, nullable: false,
|
||||||
|
},
|
||||||
|
updatedAt: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false, nullable: false,
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
type: 'string',
|
||||||
|
optional: false, nullable: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
errors: {
|
errors: {
|
||||||
|
@ -60,13 +77,13 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
private queryService: QueryService,
|
private queryService: QueryService,
|
||||||
) {
|
) {
|
||||||
super(meta, paramDef, async (ps, me) => {
|
super(meta, paramDef, async (ps, me) => {
|
||||||
const query = await this.notesRepository.createQueryBuilder('note')
|
const query = this.notesRepository.createQueryBuilder('note')
|
||||||
.where('note.id = :noteId', { noteId: ps.noteId })
|
.where('note.id = :noteId', { noteId: ps.noteId })
|
||||||
.innerJoinAndSelect('note.user', 'user');
|
.innerJoinAndSelect('note.user', 'user');
|
||||||
|
|
||||||
this.queryService.generateVisibilityQuery(query, me);
|
this.queryService.generateVisibilityQuery(query, me);
|
||||||
if (me) {
|
if (me) {
|
||||||
this.queryService.generateBlockedUserQuery(query, me);
|
this.queryService.generateBlockedUserQueryForNotes(query, me);
|
||||||
}
|
}
|
||||||
|
|
||||||
const note = await query.getOne();
|
const note = await query.getOne();
|
||||||
|
@ -75,6 +92,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
throw new ApiError(meta.errors.noSuchNote);
|
throw new ApiError(meta.errors.noSuchNote);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||||
if (note.user!.requireSigninToViewContents && me == null) {
|
if (note.user!.requireSigninToViewContents && me == null) {
|
||||||
throw new ApiError(meta.errors.signinRequired);
|
throw new ApiError(meta.errors.signinRequired);
|
||||||
}
|
}
|
||||||
|
@ -84,17 +102,17 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
||||||
throw err;
|
throw err;
|
||||||
});
|
});
|
||||||
|
|
||||||
let editArray = [];
|
let editArray: { oldDate: string, updatedAt: string, text: string | null }[] = [];
|
||||||
|
|
||||||
for (const edit of edits) {
|
for (const edit of edits) {
|
||||||
editArray.push({
|
editArray.push({
|
||||||
oldDate: edit.oldDate as Date | null ?? null,
|
oldDate: edit.oldDate.toISOString(),
|
||||||
updatedAt: edit.updatedAt,
|
updatedAt: edit.updatedAt.toISOString(),
|
||||||
text: edit.oldText ?? edit.newText ?? null,
|
text: edit.oldText ?? edit.newText ?? null,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
editArray = editArray.sort((a, b) => { return new Date(b.oldDate ?? b.updatedAt).getTime() - new Date(a.oldDate ?? a.updatedAt).getTime(); });
|
editArray = editArray.sort((a, b) => { return new Date(b.oldDate).getTime() - new Date(a.oldDate).getTime(); });
|
||||||
|
|
||||||
return editArray;
|
return editArray;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue