roles update and gradle scripts fixes

This commit is contained in:
2021-11-28 01:11:04 +06:00
parent 9a7272b976
commit 0e1a7adb04
31 changed files with 324 additions and 297 deletions

@ -4,14 +4,14 @@ import dev.inmo.postssystem.features.roles.common.*
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
import kotlinx.serialization.KSerializer
class ClientUsersRolesStorage<T : UserRole>(
class ClientRolesStorage<T : Role>(
private val baseUrl: String,
private val unifiedRequester: UnifiedRequester,
private val serializer: KSerializer<T>
) : UsersRolesStorage<T>,
ReadUsersRolesStorage<T> by ReadClientUsersRolesStorage(
) : RolesStorage<T>,
ReadRolesStorage<T> by ReadClientRolesStorage(
baseUrl, unifiedRequester, serializer
),
WriteUsersRolesStorage<T> by WriteClientUsersRolesStorage(
WriteRolesStorage<T> by WriteClientRolesStorage(
baseUrl, unifiedRequester, serializer
)

@ -1,18 +1,17 @@
package dev.inmo.postssystem.features.roles.client
import dev.inmo.postssystem.features.roles.common.*
import dev.inmo.postssystem.features.users.common.UserId
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
import dev.inmo.micro_utils.ktor.common.buildStandardUrl
import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.ListSerializer
import kotlinx.serialization.builtins.serializer
class ReadClientUsersRolesStorage<T : UserRole>(
class ReadClientRolesStorage<T : Role>(
private val baseUrl: String,
private val unifiedRequester: UnifiedRequester,
private val serializer: KSerializer<T>
) : ReadUsersRolesStorage<T> {
) : ReadRolesStorage<T> {
private val userRolesSerializer = ListSerializer(serializer)
private val userRolesFullUrl = buildStandardUrl(
@ -20,50 +19,50 @@ class ReadClientUsersRolesStorage<T : UserRole>(
usersRolesRootPathPart
)
override suspend fun getUsers(
userRole: T
): List<UserId> = unifiedRequester.uniget(
override suspend fun getSubjects(
role: T
): List<RoleSubject> = unifiedRequester.uniget(
buildStandardUrl(
userRolesFullUrl,
usersRolesGetUsersPathPart,
usersRolesUserRoleQueryParameterName to unifiedRequester.encodeUrlQueryValue(serializer, userRole)
usersRolesGetSubjectsPathPart,
usersRolesRoleQueryParameterName to unifiedRequester.encodeUrlQueryValue(serializer, role)
),
UsersIdsSerializer
RoleSubjectsSerializer
)
override suspend fun getRoles(
userId: UserId
subject: RoleSubject
): List<T> = unifiedRequester.uniget(
buildStandardUrl(
userRolesFullUrl,
usersRolesGetRolesPathPart,
usersRolesUserIdQueryParameterName to unifiedRequester.encodeUrlQueryValue(UserId.serializer(), userId)
usersRolesRoleSubjectQueryParameterName to unifiedRequester.encodeUrlQueryValue(RoleSubject.serializer(), subject)
),
userRolesSerializer
)
override suspend fun contains(
userId: UserId,
userRole: T
subject: RoleSubject,
role: T
): Boolean = unifiedRequester.uniget(
buildStandardUrl(
userRolesFullUrl,
usersRolesContainsPathPart,
usersRolesUserIdQueryParameterName to unifiedRequester.encodeUrlQueryValue(UserId.serializer(), userId),
usersRolesUserRoleQueryParameterName to unifiedRequester.encodeUrlQueryValue(serializer, userRole)
usersRolesRoleSubjectQueryParameterName to unifiedRequester.encodeUrlQueryValue(RoleSubject.serializer(), subject),
usersRolesRoleQueryParameterName to unifiedRequester.encodeUrlQueryValue(serializer, role)
),
Boolean.serializer()
)
override suspend fun containsAny(
userId: UserId,
userRoles: List<T>
subject: RoleSubject,
roles: List<T>
): Boolean = unifiedRequester.uniget(
buildStandardUrl(
userRolesFullUrl,
usersRolesContainsAnyPathPart,
usersRolesUserIdQueryParameterName to unifiedRequester.encodeUrlQueryValue(UserId.serializer(), userId),
usersRolesUserRoleQueryParameterName to unifiedRequester.encodeUrlQueryValue(userRolesSerializer, userRoles)
usersRolesRoleSubjectQueryParameterName to unifiedRequester.encodeUrlQueryValue(RoleSubject.serializer(), subject),
usersRolesRoleQueryParameterName to unifiedRequester.encodeUrlQueryValue(userRolesSerializer, roles)
),
Boolean.serializer()
)

@ -1,18 +1,17 @@
package dev.inmo.postssystem.features.roles.client
import dev.inmo.postssystem.features.roles.common.*
import dev.inmo.postssystem.features.users.common.UserId
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
import dev.inmo.micro_utils.ktor.common.buildStandardUrl
import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.serializer
class WriteClientUsersRolesStorage<T : UserRole>(
class WriteClientRolesStorage<T : Role>(
private val baseUrl: String,
private val unifiedRequester: UnifiedRequester,
private val serializer: KSerializer<T>
) : WriteUsersRolesStorage<T> {
private val wrapperSerializer = UserRolesStorageIncludeExcludeWrapper.serializer(
) : WriteRolesStorage<T> {
private val wrapperSerializer = RolesStorageIncludeExcludeWrapper.serializer(
serializer
)
private val userRolesFullUrl = buildStandardUrl(
@ -29,23 +28,23 @@ class WriteClientUsersRolesStorage<T : UserRole>(
)
override suspend fun include(
userId: UserId,
userRole: T
subject: RoleSubject,
role: T
): Boolean = unifiedRequester.unipost(
includeFullUrl,
wrapperSerializer to UserRolesStorageIncludeExcludeWrapper(
userId, userRole
wrapperSerializer to RolesStorageIncludeExcludeWrapper(
subject, role
),
Boolean.serializer()
)
override suspend fun exclude(
userId: UserId,
userRole: T
subject: RoleSubject,
role: T
): Boolean = unifiedRequester.unipost(
excludeFullUrl,
wrapperSerializer to UserRolesStorageIncludeExcludeWrapper(
userId, userRole
wrapperSerializer to RolesStorageIncludeExcludeWrapper(
subject, role
),
Boolean.serializer()
)