enhance: 新しいコンディショナルロール条件の実装 (#13732)

* enhance: 新しいコンディショナルロールの実装

* fix: CHANGELOG.md
This commit is contained in:
おさむのひと
2024-04-19 15:22:23 +09:00
committed by GitHub
parent ea9aa6fdb4
commit cd7f7271ca
12 changed files with 624 additions and 74 deletions

View File

@@ -6,69 +6,149 @@
import { Entity, Column, PrimaryColumn } from 'typeorm';
import { id } from './util/id.js';
/**
* ~かつ~
* 複数の条件を同時に満たす場合のみ成立とする
*/
type CondFormulaValueAnd = {
type: 'and';
values: RoleCondFormulaValue[];
};
/**
* ~または~
* 複数の条件のうち、いずれかを満たす場合のみ成立とする
*/
type CondFormulaValueOr = {
type: 'or';
values: RoleCondFormulaValue[];
};
/**
* ~ではない
* 条件を満たさない場合のみ成立とする
*/
type CondFormulaValueNot = {
type: 'not';
value: RoleCondFormulaValue;
};
/**
* ローカルユーザーのみ成立とする
*/
type CondFormulaValueIsLocal = {
type: 'isLocal';
};
/**
* リモートユーザーのみ成立とする
*/
type CondFormulaValueIsRemote = {
type: 'isRemote';
};
/**
* 既に指定のマニュアルロールにアサインされている場合のみ成立とする
*/
type CondFormulaValueRoleAssignedTo = {
type: 'roleAssignedTo';
roleId: string;
};
/**
* サスペンド済みアカウントの場合のみ成立とする
*/
type CondFormulaValueIsSuspended = {
type: 'isSuspended';
};
/**
* 鍵アカウントの場合のみ成立とする
*/
type CondFormulaValueIsLocked = {
type: 'isLocked';
};
/**
* botアカウントの場合のみ成立とする
*/
type CondFormulaValueIsBot = {
type: 'isBot';
};
/**
* 猫アカウントの場合のみ成立とする
*/
type CondFormulaValueIsCat = {
type: 'isCat';
};
/**
* 「ユーザを見つけやすくする」が有効なアカウントの場合のみ成立とする
*/
type CondFormulaValueIsExplorable = {
type: 'isExplorable';
};
/**
* ユーザが作成されてから指定期間経過した場合のみ成立とする
*/
type CondFormulaValueCreatedLessThan = {
type: 'createdLessThan';
sec: number;
};
/**
* ユーザが作成されてから指定期間経っていない場合のみ成立とする
*/
type CondFormulaValueCreatedMoreThan = {
type: 'createdMoreThan';
sec: number;
};
/**
* フォロワー数が指定値以下の場合のみ成立とする
*/
type CondFormulaValueFollowersLessThanOrEq = {
type: 'followersLessThanOrEq';
value: number;
};
/**
* フォロワー数が指定値以上の場合のみ成立とする
*/
type CondFormulaValueFollowersMoreThanOrEq = {
type: 'followersMoreThanOrEq';
value: number;
};
/**
* フォロー数が指定値以下の場合のみ成立とする
*/
type CondFormulaValueFollowingLessThanOrEq = {
type: 'followingLessThanOrEq';
value: number;
};
/**
* フォロー数が指定値以上の場合のみ成立とする
*/
type CondFormulaValueFollowingMoreThanOrEq = {
type: 'followingMoreThanOrEq';
value: number;
};
/**
* 投稿数が指定値以下の場合のみ成立とする
*/
type CondFormulaValueNotesLessThanOrEq = {
type: 'notesLessThanOrEq';
value: number;
};
/**
* 投稿数が指定値以上の場合のみ成立とする
*/
type CondFormulaValueNotesMoreThanOrEq = {
type: 'notesMoreThanOrEq';
value: number;
@@ -80,6 +160,11 @@ export type RoleCondFormulaValue = { id: string } & (
CondFormulaValueNot |
CondFormulaValueIsLocal |
CondFormulaValueIsRemote |
CondFormulaValueIsSuspended |
CondFormulaValueIsLocked |
CondFormulaValueIsBot |
CondFormulaValueIsCat |
CondFormulaValueIsExplorable |
CondFormulaValueRoleAssignedTo |
CondFormulaValueCreatedLessThan |
CondFormulaValueCreatedMoreThan |

View File

@@ -57,6 +57,20 @@ export const packedRoleCondFormulaValueIsLocalOrRemoteSchema = {
},
} as const;
export const packedRoleCondFormulaValueUserSettingBooleanSchema = {
type: 'object',
properties: {
id: {
type: 'string', optional: false,
},
type: {
type: 'string',
nullable: false, optional: false,
enum: ['isSuspended', 'isLocked', 'isBot', 'isCat', 'isExplorable'],
},
},
} as const;
export const packedRoleCondFormulaValueAssignedRoleSchema = {
type: 'object',
properties: {
@@ -135,6 +149,9 @@ export const packedRoleCondFormulaValueSchema = {
{
ref: 'RoleCondFormulaValueIsLocalOrRemote',
},
{
ref: 'RoleCondFormulaValueUserSettingBooleanSchema',
},
{
ref: 'RoleCondFormulaValueAssignedRole',
},