generated from alphane/template
Adding a ton of stuff
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import { User } from "@/models"
|
||||
import UserPreference, { PreferenceKeys } from "@/models/user-preference"
|
||||
import { preferenceValueValidators } from "@/models/user-preference-value-validators"
|
||||
import BaseService from "@/services/base-service"
|
||||
|
||||
export class UpsertService extends BaseService {
|
||||
constructor(
|
||||
private user: User,
|
||||
private key: string,
|
||||
private value: unknown | null
|
||||
) {
|
||||
super()
|
||||
}
|
||||
|
||||
async perform() {
|
||||
const isPreferenceKey = Object.values(PreferenceKeys).includes(this.key as PreferenceKeys)
|
||||
if (!isPreferenceKey) {
|
||||
throw new Error("Provided key is not a valid PreferenceKey")
|
||||
}
|
||||
|
||||
const key = this.key as PreferenceKeys
|
||||
|
||||
const validator = preferenceValueValidators[key]
|
||||
if (!validator(this.value)) {
|
||||
throw new Error("Invalid value for preference key")
|
||||
}
|
||||
|
||||
return UserPreference.setValue(this.user.id, key, this.value)
|
||||
}
|
||||
}
|
||||
|
||||
export default UpsertService
|
||||
Reference in New Issue
Block a user