feat(endpoints): copyOnMoveAccount

This commit is contained in:
anatawa12 2025-04-02 11:13:19 +09:00
parent 3ac98f2032
commit 4167a099c7
No known key found for this signature in database
GPG Key ID: 9CA909848B8E4EA6
5 changed files with 19 additions and 1 deletions

View File

@ -13,6 +13,7 @@ import type { MiRole } from '@/models/Role.js';
import { bindThis } from '@/decorators.js'; import { bindThis } from '@/decorators.js';
import { DEFAULT_POLICIES } from '@/core/RoleService.js'; import { DEFAULT_POLICIES } from '@/core/RoleService.js';
import { IdService } from '@/core/IdService.js'; import { IdService } from '@/core/IdService.js';
import { Packed } from '@/misc/json-schema.js';
@Injectable() @Injectable()
export class RoleEntityService { export class RoleEntityService {
@ -31,7 +32,7 @@ export class RoleEntityService {
public async pack( public async pack(
src: MiRole['id'] | MiRole, src: MiRole['id'] | MiRole,
me?: { id: MiUser['id'] } | null | undefined, me?: { id: MiUser['id'] } | null | undefined,
) { ): Promise<Packed<'Role'>> {
const role = typeof src === 'object' ? src : await this.rolesRepository.findOneByOrFail({ id: src }); const role = typeof src === 'object' ? src : await this.rolesRepository.findOneByOrFail({ id: src });
const assignedCount = await this.roleAssignmentsRepository.createQueryBuilder('assign') const assignedCount = await this.roleAssignmentsRepository.createQueryBuilder('assign')
@ -67,6 +68,7 @@ export class RoleEntityService {
isModerator: role.isModerator, isModerator: role.isModerator,
isExplorable: role.isExplorable, isExplorable: role.isExplorable,
asBadge: role.asBadge, asBadge: role.asBadge,
copyOnMoveAccount: role.copyOnMoveAccount,
canEditMembersByModerator: role.canEditMembersByModerator, canEditMembersByModerator: role.canEditMembersByModerator,
displayOrder: role.displayOrder, displayOrder: role.displayOrder,
policies: policies, policies: policies,

View File

@ -389,6 +389,12 @@ export const packedRoleSchema = {
optional: false, nullable: false, optional: false, nullable: false,
example: false, example: false,
}, },
copyOnMoveAccount: {
type: 'boolean',
description: 'True if the role is going to be copied to dest account on account move.',
optional: false, nullable: false,
example: false,
},
canEditMembersByModerator: { canEditMembersByModerator: {
type: 'boolean', type: 'boolean',
optional: false, nullable: false, optional: false, nullable: false,

View File

@ -36,6 +36,7 @@ export const paramDef = {
isAdministrator: { type: 'boolean' }, isAdministrator: { type: 'boolean' },
isExplorable: { type: 'boolean', default: false }, // optional for backward compatibility isExplorable: { type: 'boolean', default: false }, // optional for backward compatibility
asBadge: { type: 'boolean' }, asBadge: { type: 'boolean' },
copyOnMoveAccount: { type: 'boolean' },
canEditMembersByModerator: { type: 'boolean' }, canEditMembersByModerator: { type: 'boolean' },
displayOrder: { type: 'number' }, displayOrder: { type: 'number' },
policies: { policies: {

View File

@ -41,6 +41,7 @@ export const paramDef = {
isAdministrator: { type: 'boolean' }, isAdministrator: { type: 'boolean' },
isExplorable: { type: 'boolean' }, isExplorable: { type: 'boolean' },
asBadge: { type: 'boolean' }, asBadge: { type: 'boolean' },
copyOnMoveAccount: { type: 'boolean' },
canEditMembersByModerator: { type: 'boolean' }, canEditMembersByModerator: { type: 'boolean' },
displayOrder: { type: 'number' }, displayOrder: { type: 'number' },
policies: { policies: {
@ -78,6 +79,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
isAdministrator: ps.isAdministrator, isAdministrator: ps.isAdministrator,
isExplorable: ps.isExplorable, isExplorable: ps.isExplorable,
asBadge: ps.asBadge, asBadge: ps.asBadge,
copyOnMoveAccount: ps.copyOnMoveAccount,
canEditMembersByModerator: ps.canEditMembersByModerator, canEditMembersByModerator: ps.canEditMembersByModerator,
displayOrder: ps.displayOrder, displayOrder: ps.displayOrder,
policies: ps.policies, policies: ps.policies,

View File

@ -5132,6 +5132,11 @@ export type components = {
isExplorable: boolean; isExplorable: boolean;
/** @example false */ /** @example false */
asBadge: boolean; asBadge: boolean;
/**
* @description True if the role is going to be copied to dest account on account move.
* @example false
*/
copyOnMoveAccount: boolean;
/** @example false */ /** @example false */
canEditMembersByModerator: boolean; canEditMembersByModerator: boolean;
policies: { policies: {
@ -9347,6 +9352,7 @@ export type operations = {
/** @default false */ /** @default false */
isExplorable?: boolean; isExplorable?: boolean;
asBadge: boolean; asBadge: boolean;
copyOnMoveAccount?: boolean;
canEditMembersByModerator: boolean; canEditMembersByModerator: boolean;
displayOrder: number; displayOrder: number;
policies: Record<string, never>; policies: Record<string, never>;
@ -9622,6 +9628,7 @@ export type operations = {
isAdministrator?: boolean; isAdministrator?: boolean;
isExplorable?: boolean; isExplorable?: boolean;
asBadge?: boolean; asBadge?: boolean;
copyOnMoveAccount?: boolean;
canEditMembersByModerator?: boolean; canEditMembersByModerator?: boolean;
displayOrder?: number; displayOrder?: number;
policies?: Record<string, never>; policies?: Record<string, never>;