Skip to content

Commit

Permalink
rename *Essential to *Compact
Browse files Browse the repository at this point in the history
  • Loading branch information
arily committed Aug 21, 2023
1 parent 6874fa2 commit 28570bb
Show file tree
Hide file tree
Showing 28 changed files with 139 additions and 147 deletions.
4 changes: 2 additions & 2 deletions src/common/utils/privilege.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { UserEssential } from '~/def/user'
import type { UserCompact } from '~/def/user'
import { UserPrivilege } from '~/def/user'

export function calcUserPrivilege(user: UserEssential<unknown>) {
export function calcUserPrivilege(user: UserCompact<unknown>) {
const admin = user.roles.includes(UserPrivilege.Admin)
const owner = user.roles.includes(UserPrivilege.Owner)
const staff = user.roles.includes(UserPrivilege.Staff)
Expand Down
4 changes: 2 additions & 2 deletions src/composables/useUserRoleColor.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import type { UserEssential } from '~/def/user'
import type { UserCompact } from '~/def/user'
import { UserPrivilege } from '~/def/user'

// https://hypercolor.dev/
export default function (user: UserEssential<unknown>) {
export default function (user: UserCompact<unknown>) {
const roles = user.roles
const classNames = ['text-transparent bg-clip-text animate-text']

Expand Down
4 changes: 2 additions & 2 deletions src/def/beatmap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export interface Beatmapset<Source extends BeatmapSource, LocalId, ForeignId> {
'list@2x'?: string
}
}
export interface BeatmapEssential<Id, ForeignId = never> {
export interface BeatmapCompact<Id, ForeignId = never> {
id: Id
foreignId: ForeignId
properties: {
Expand Down Expand Up @@ -96,7 +96,7 @@ export type NormalBeatmapWithMeta<
Status extends RankingStatus,
LocalId,
ForeignId,
> = BeatmapEssential<
> = BeatmapCompact<
LocalId,
Source extends Unknown ? never : ForeignId
> & {
Expand Down
6 changes: 3 additions & 3 deletions src/def/leaderboard.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { UserEssential } from './user'
import type { UserCompact } from './user'
import type {
LeaderboardRankingSystem,
LeaderboardScoreRankingSystem,
Expand All @@ -10,7 +10,7 @@ export interface Leaderboard<
IdType,
RankingSystem extends LeaderboardRankingSystem = LeaderboardRankingSystem,
> {
user: UserEssential<IdType>
user: UserCompact<IdType>
inThisLeaderboard: {
accuracy: number
playCount: number
Expand All @@ -20,7 +20,7 @@ export interface Leaderboard<
& Record<RankingSystem & LeaderboardScoreRankingSystem, bigint>
}
export interface BeatmapLeaderboard<Id> {
user: UserEssential<Id>
user: UserCompact<Id>
score: {
id: unknown
score: number | bigint
Expand Down
6 changes: 3 additions & 3 deletions src/def/score.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ export enum StableMod {
// future(lazer) proof
export type Mod = StableMod

export interface ScoreEssential<ScoreId, M extends ActiveMode> {
export interface ScoreCompact<ScoreId, M extends ActiveMode> {
id: ScoreId
playedAt: Date
mods: Mod[]
Expand All @@ -91,7 +91,7 @@ export type RulesetScore<
PPRank extends PPRankingSystem = never,
BMSrc extends BeatmapSource = BeatmapSource,
Status extends RankingStatus = RankingStatus,
> = ScoreEssential<ScoreId, M> & {
> = ScoreCompact<ScoreId, M> & {
mode: M
ruleset: Ruleset
beatmap: BeatmapWithMeta<BMSrc, Status, BeatmapId, unknown>
Expand All @@ -111,7 +111,7 @@ export interface RankingSystemScore<
PPRank extends LeaderboardRankingSystem = never,
BMSrc extends BeatmapSource = BeatmapSource,
BMStatus extends RankingStatus = RankingStatus,
> extends ScoreEssential<ScoreId, M> {
> extends ScoreCompact<ScoreId, M> {
pp: PPRank extends PPRankingSystem ? number : never
rank?: number
beatmap: BeatmapWithMeta<BMSrc, BMStatus, BeatmapId, unknown>
Expand Down
6 changes: 3 additions & 3 deletions src/def/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export enum DynamicSettingStore {
export interface UserSecrets {
password: string
}
export interface UserEssential<Id> {
export interface UserCompact<Id> {
id: Id
ingameId: number
name: string
Expand Down Expand Up @@ -142,12 +142,12 @@ export interface UserExtra<
html: string
raw?: ArticleProvider.JSONContent
}
relationships: Array<UserEssential<Id> & UserRelationship>
relationships: Array<UserCompact<Id> & UserRelationship>
}

export type UserFull<
Id,
IncludeMode extends ActiveMode = ActiveMode,
IncludeRuleset extends ActiveRuleset = ActiveRuleset,
Ranking extends LeaderboardRankingSystem = LeaderboardRankingSystem,
> = UserEssential<Id> & Partial<UserOptional & UserExtra<Id, IncludeMode, IncludeRuleset, Ranking>>
> = UserCompact<Id> & Partial<UserOptional & UserExtra<Id, IncludeMode, IncludeRuleset, Ranking>>
6 changes: 3 additions & 3 deletions src/pages/me/relations.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script setup lang="ts">
import type { UserEssential } from '~/def/user'
import type { UserCompact } from '~/def/user'
import type { UserRelationship } from '~/def/user-relationship'
import { Relationship } from '~/def'
import { useSession } from '~/store/session'
Expand Down Expand Up @@ -31,11 +31,11 @@ const errorMessage = shallowRef('')
onErrorCaptured((err) => {
errorMessage.value = err.message || t('err-message')
})
function haveRelation(relation: Relationship, user: UserEssential<string> & UserRelationship) {
function haveRelation(relation: Relationship, user: UserCompact<string> & UserRelationship) {
return user.relationship.includes(relation)
}
const pendingUser = reactive(new Set<string>())
async function toggleRelation(type: Relationship, user: UserEssential<string> & UserRelationship) {
async function toggleRelation(type: Relationship, user: UserCompact<string> & UserRelationship) {
pendingUser.add(user.id)
try {
if (haveRelation(type, user)) {
Expand Down
14 changes: 7 additions & 7 deletions src/server/backend/$base/server/article/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import dirTree from 'directory-tree'

import { config as getConfig } from '../../env'
import { latest, paths, v0, versions } from './v'
import type { UserEssential, UserPrivilege } from '~/def/user'
import type { UserCompact, UserPrivilege } from '~/def/user'
import useEditorExtensions from '~/composables/useEditorExtensionsServer'
import { Logger } from '$base/log'

Expand All @@ -32,17 +32,17 @@ export abstract class ArticleProvider {
abstract get(opt: {
slug: string
fallback: boolean
user: UserEssential<any>
user: UserCompact<any>
}): PromiseLike<(ArticleProvider.Content & ArticleProvider.Meta & ArticleProvider.Version & ArticleProvider.AccessControl) | undefined>

abstract save(opt: {
slug: string
json: ArticleProvider.JSONContent
privilege: ArticleProvider.Meta['privilege']
user: UserEssential<any>
user: UserCompact<any>
}): PromiseLike<void>

async delete(opt: { slug: string; user: UserEssential<any> }) {
async delete(opt: { slug: string; user: UserCompact<any> }) {
return ArticleProvider.deleteLocal(opt)
}

Expand All @@ -65,7 +65,7 @@ export abstract class ArticleProvider {
async getLocal(opt: {
slug: string
fallback?: boolean
user?: UserEssential<any>
user?: UserCompact<any>
}): Promise<(ArticleProvider.Meta & ArticleProvider.Content & ArticleProvider.Version) | undefined> {
const content = await ArticleProvider.getLocalArticleData(opt)
if (!content) {
Expand Down Expand Up @@ -114,7 +114,7 @@ export abstract class ArticleProvider {
slug: string
json: ArticleProvider.JSONContent
privilege: ArticleProvider.Meta['privilege']
user: UserEssential<any>
user: UserCompact<any>
dynamic: boolean
}): Promise<void> {
if (!opt.user.roles.find(role => ['admin', 'owner'].includes(role))) {
Expand Down Expand Up @@ -149,7 +149,7 @@ export abstract class ArticleProvider {
}))
}

static async deleteLocal(opt: { slug: string; user: UserEssential<any> }) {
static async deleteLocal(opt: { slug: string; user: UserCompact<any> }) {
const { user, slug } = opt
if (!user.roles.find(role => ['admin', 'owner'].includes(role))) {
throw new Error('you have insufficient privilege to edit this article')
Expand Down
6 changes: 3 additions & 3 deletions src/server/backend/$base/server/map.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { idTransformable } from './@extends'
import type { Tag } from '~/def/search'
import type {
BeatmapEssential, BeatmapSource, BeatmapWithMeta, Beatmapset, RankingStatus,
BeatmapCompact, BeatmapSource, BeatmapWithMeta, Beatmapset, RankingStatus,
} from '~/def/beatmap'

export namespace MapProvider {
Expand All @@ -12,7 +12,7 @@ export namespace MapProvider {
export interface MapProvider<Id> extends idTransformable {
getBeatmapset(query: MapProvider.IdQuery<Id>): PromiseLike<
Beatmapset<BeatmapSource, Id, unknown> & {
beatmaps: BeatmapEssential<Id, unknown>[]
beatmaps: BeatmapCompact<Id, unknown>[]
}
>
getBeatmap(
Expand All @@ -24,7 +24,7 @@ export interface MapProvider<Id> extends idTransformable {
unknown
>>
searchBeatmap(opt: { keyword: string; limit: number; filters?: Tag[] }): PromiseLike<
(BeatmapEssential<Id, unknown> & {
(BeatmapCompact<Id, unknown> & {
beatmapset: Beatmapset<BeatmapSource, Id, unknown>
})[]
>
Expand Down
8 changes: 4 additions & 4 deletions src/server/backend/$base/server/score.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { idTransformable, scoreIdTransformable } from './@extends'
import type { ActiveMode, ActiveRuleset, PPRankingSystem } from '~/def/common'
import type { RulesetScore } from '~/def/score'
import type { UserEssential } from '~/def/user'
import type { UserCompact } from '~/def/user'

export namespace ScoreProvider {

Expand Down Expand Up @@ -29,17 +29,17 @@ export namespace ScoreProvider {
export interface ScoreProvider<TScoreId, TId> extends idTransformable, scoreIdTransformable {
id(id: TScoreId): PromiseLike<
| (RulesetScore<TScoreId, TId, ActiveMode, ActiveRuleset, PPRankingSystem> & {
user: UserEssential<TId>
user: UserCompact<TId>
})
>
findOne(opt: ScoreProvider.SearchQueryMany<TId> | ScoreProvider.SearchId<TScoreId>): PromiseLike<
| (RulesetScore<TScoreId, TId, ActiveMode, ActiveRuleset, PPRankingSystem> & {
user: UserEssential<TId>
user: UserCompact<TId>
})
>
findMany(opt: ScoreProvider.SearchQueryMany<TId>): PromiseLike<
(RulesetScore<TScoreId, TId, ActiveMode, ActiveRuleset, PPRankingSystem> & {
user: UserEssential<TId>
user: UserCompact<TId>
})[]
>

Expand Down
10 changes: 5 additions & 5 deletions src/server/backend/$base/server/user-relation.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
import type { idTransformable } from './@extends'
import type { Relationship } from '~/def'
import type { UserEssential } from '~/def/user'
import type { UserCompact } from '~/def/user'
import type { UserRelationship } from '~/def/user-relationship'

export interface UserRelationProvider<Id> extends idTransformable {
get(query: { user: { id: Id } }): PromiseLike<Array<UserEssential<Id> & UserRelationship>>
get(query: { user: { id: Id } }): PromiseLike<Array<UserCompact<Id> & UserRelationship>>
getOne(
fromUser: { id: Id },
toUser: { id: Id }
): PromiseLike<Relationship | void>
removeOne(query: {
fromUser: UserEssential<Id>
targetUser: UserEssential<Id>
fromUser: UserCompact<Id>
targetUser: UserCompact<Id>
type: Relationship
}): PromiseLike<void>
count(query: {
user: UserEssential<Id>
user: UserCompact<Id>
type: Relationship
}): PromiseLike<number>
}
52 changes: 26 additions & 26 deletions src/server/backend/$base/server/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import type { RankingSystemScore } from '~/def/score'
import type {
DynamicSettingStore,
Scope,
UserEssential,
UserCompact,
UserExtra,
UserOptional,
UserSecrets,
Expand Down Expand Up @@ -41,29 +41,14 @@ export namespace UserProvider {
export abstract class UserProvider<Id> extends idTransformable {
abstract exists({ handle, keys }: UserProvider.OptType): PromiseLike<boolean>

abstract getEssential<_Scope extends Scope>(
abstract getCompact<_Scope extends Scope>(
opt: UserProvider.OptType & { scope: _Scope }
): Promise<_Scope extends Scope.Self ? UserEssential<Id> & UserSecrets : UserEssential<Id>>
): Promise<_Scope extends Scope.Self ? UserCompact<Id> & UserSecrets : UserCompact<Id>>

abstract getEssentialById<_Scope extends Scope>(opt: {
abstract getCompactById<_Scope extends Scope>(opt: {
id: Id
scope: _Scope
}): Promise<_Scope extends Scope.Self ? UserEssential<Id> & UserSecrets : UserEssential<Id>>

abstract getBests<
Mode extends ActiveMode,
Ruleset extends ActiveRuleset,
RankingSystem extends LeaderboardRankingSystem,
>(query: UserProvider.BaseQuery<Id, Mode, Ruleset, RankingSystem>): PromiseLike<RankingSystemScore<string, Id, Mode, RankingSystem>[]>

abstract getTops<
Mode extends ActiveMode,
Ruleset extends ActiveRuleset,
RankingSystem extends LeaderboardRankingSystem,
>(query: UserProvider.BaseQuery<Id, Mode, Ruleset, RankingSystem>): PromiseLike<{
count: number
scores: RankingSystemScore<string, Id, Mode, RankingSystem>[]
}>
}): Promise<_Scope extends Scope.Self ? UserCompact<Id> & UserSecrets : UserCompact<Id>>

abstract getStatistics(query: {
id: Id
Expand All @@ -81,7 +66,7 @@ export abstract class UserProvider<Id> extends idTransformable {
includeHidden?: boolean
scope: _Scope
}): Promise<
UserEssential<Id> & {
UserCompact<Id> & {
[K in keyof UserProvider.ComposableProperties<Id> as Excludes[K] extends true
? never
: K
Expand Down Expand Up @@ -109,7 +94,7 @@ export abstract class UserProvider<Id> extends idTransformable {
name?: string
flag?: CountryCode
}
): PromiseLike<UserEssential<Id>>
): PromiseLike<UserCompact<Id>>

abstract changeUserpage(
user: { id: Id },
Expand All @@ -128,19 +113,19 @@ export abstract class UserProvider<Id> extends idTransformable {
name?: string
userpageContent?: string
}
): PromiseLike<UserEssential<Id>>
): PromiseLike<UserCompact<Id>>

abstract changePassword(
user: { id: Id },
newPasswordMD5: string
): PromiseLike<UserEssential<Id>>
): PromiseLike<UserCompact<Id>>

abstract changeAvatar(user: { id: Id }, avatar: Uint8Array): PromiseLike<string>

abstract search(opt: {
keyword: string
limit: number
}): PromiseLike<UserEssential<Id>[]>
}): PromiseLike<UserCompact<Id>[]>

abstract count(opt: {
keyword?: string
Expand Down Expand Up @@ -174,9 +159,24 @@ export abstract class UserProvider<Id> extends idTransformable {
}
} | null>

abstract register(opt: { name: string; safeName: string; email: string; passwordMd5: string }): PromiseLike<UserEssential<Id>>
abstract register(opt: { name: string; safeName: string; email: string; passwordMd5: string }): PromiseLike<UserCompact<Id>>

abstract getDynamicSettings(user: { id: Id }): Promise<ExtractSettingType<ExtractLocationSettings<DynamicSettingStore.Server, typeof settings>>>

abstract setDynamicSettings(user: { id: Id }, args: ExtractSettingType<ExtractLocationSettings<DynamicSettingStore.Server, typeof settings>>): Promise<ExtractSettingType<ExtractLocationSettings<DynamicSettingStore.Server, typeof settings>>>

abstract getBests<
Mode extends ActiveMode,
Ruleset extends ActiveRuleset,
RankingSystem extends LeaderboardRankingSystem,
>(query: UserProvider.BaseQuery<Id, Mode, Ruleset, RankingSystem>): PromiseLike<RankingSystemScore<string, Id, Mode, RankingSystem>[]>

abstract getTops<
Mode extends ActiveMode,
Ruleset extends ActiveRuleset,
RankingSystem extends LeaderboardRankingSystem,
>(query: UserProvider.BaseQuery<Id, Mode, Ruleset, RankingSystem>): PromiseLike<{
count: number
scores: RankingSystemScore<string, Id, Mode, RankingSystem>[]
}>
}
Loading

0 comments on commit 28570bb

Please sign in to comment.