Frontend first draft

This commit is contained in:
Arseni
2025-11-13 15:06:15 +03:00
parent e47f343afb
commit ddb54ddfdc
504 changed files with 25498 additions and 1 deletions

View File

@@ -0,0 +1,23 @@
import 'package:pshared/data/dto/permissions/action_effect.dart';
import 'package:pshared/models/permissions/action_effect.dart';
import 'package:pshared/models/permissions/action.dart';
import 'package:pshared/models/permissions/effect.dart';
extension ActionEffectMapper on ActionEffect {
ActionEffectDTO toDTO() {
return ActionEffectDTO(
action: action.toShortString(),
effect: effect.toShortString(),
);
}
}
extension ActionEffectDTOMapper on ActionEffectDTO {
ActionEffect toDomain() {
return ActionEffect(
action: ActionExtension.fromString(action),
effect: EffectExtension.fromString(effect),
);
}
}

View File

@@ -0,0 +1,33 @@
import 'package:pshared/data/dto/permissions/data/permission.dart';
import 'package:pshared/data/mapper/permissions/action_effect.dart';
import 'package:pshared/models/permissions/data/permission.dart';
import 'package:pshared/models/permissions/data/policy.dart';
extension PermissionMapper on Permission {
PermissionDTO toDTO() {
return PermissionDTO(
roleDescriptionRef: policy.roleDescriptionRef,
organizationRef: policy.organizationRef,
descriptionRef: policy.descriptionRef,
objectRef: policy.objectRef,
effect: policy.effect.toDTO(),
accountRef: accountRef,
);
}
}
extension PermissionDTOMapper on PermissionDTO {
Permission toDomain() {
return Permission(
policy: Policy(
roleDescriptionRef: roleDescriptionRef,
organizationRef: organizationRef,
descriptionRef: descriptionRef,
objectRef: objectRef,
effect: effect.toDomain(),
),
accountRef: accountRef,
);
}
}

View File

@@ -0,0 +1,26 @@
import 'package:pshared/data/dto/permissions/data/permissions.dart';
import 'package:pshared/data/mapper/permissions/data/permission.dart';
import 'package:pshared/data/mapper/permissions/data/policy.dart';
import 'package:pshared/data/mapper/permissions/data/role.dart';
import 'package:pshared/models/permissions/data/permissions.dart';
extension PermissionsDataMapper on PermissionsData {
PermissionsDataDTO toDTO() {
return PermissionsDataDTO(
roles: roles.map((role) => role.toDTO()).toList(),
policies: policies.map((policy) => policy.toDTO()).toList(),
permissions: permissions.map((permission) => permission.toDTO()).toList(),
);
}
}
extension PermissionsDataDTOMapper on PermissionsDataDTO {
PermissionsData toDomain() {
return PermissionsData(
roles: roles.map((role) => role.toDomain()).toList(),
policies: policies.map((policy) => policy.toDomain()).toList(),
permissions: permissions.map((permission) => permission.toDomain()).toList(),
);
}
}

View File

@@ -0,0 +1,28 @@
import 'package:pshared/data/dto/permissions/data/policy.dart';
import 'package:pshared/data/mapper/permissions/action_effect.dart';
import 'package:pshared/models/permissions/data/policy.dart';
extension PolicyMapper on Policy {
PolicyDTO toDTO() {
return PolicyDTO(
roleDescriptionRef: roleDescriptionRef,
organizationRef: organizationRef,
descriptionRef: descriptionRef,
objectRef: objectRef,
effect: effect.toDTO(),
);
}
}
extension PolicyDTOMapper on PolicyDTO {
Policy toDomain() {
return Policy(
roleDescriptionRef: roleDescriptionRef,
organizationRef: organizationRef,
descriptionRef: descriptionRef,
objectRef: objectRef,
effect: effect.toDomain(),
);
}
}

View File

@@ -0,0 +1,25 @@
import 'package:pshared/data/dto/permissions/data/role.dart';
import 'package:pshared/models/permissions/data/role.dart';
extension RoleMapper on Role {
/// Converts a `Role` domain model to a `RoleDTO`.
RoleDTO toDTO() {
return RoleDTO(
accountRef: accountRef,
descriptionRef: descriptionRef,
organizationRef: organizationRef,
);
}
}
extension RoleDTOMapper on RoleDTO {
/// Converts a `RoleDTO` to a `Role` domain model.
Role toDomain() {
return Role(
accountRef: accountRef,
descriptionRef: descriptionRef,
organizationRef: organizationRef,
);
}
}

View File

@@ -0,0 +1,23 @@
import 'package:pshared/data/dto/permissions/description/description.dart';
import 'package:pshared/data/mapper/permissions/descriptions/policy.dart';
import 'package:pshared/data/mapper/permissions/descriptions/role.dart';
import 'package:pshared/models/permissions/descriptions/permissions.dart';
extension PermissionsDescriptionMapper on PermissionsDescription {
PermissionsDescriptionDTO toDTO() {
return PermissionsDescriptionDTO(
roles: roles.map((role) => role.toDTO()).toList(),
policies: policies.map((policy) => policy.toDTO()).toList(),
);
}
}
extension PermissionsDescriptionDTOMapper on PermissionsDescriptionDTO {
PermissionsDescription toDomain() {
return PermissionsDescription(
roles: roles.map((role) => role.toDomain()).toList(),
policies: policies.map((policy) => policy.toDomain()).toList(),
);
}
}

View File

@@ -0,0 +1,22 @@
import 'package:pshared/data/dto/permissions/description/policy.dart';
import 'package:pshared/models/permissions/descriptions/policy.dart';
import 'package:pshared/models/storable.dart';
extension PolicyDescriptionMapper on PolicyDescription {
PolicyDescriptionDTO toDTO() => PolicyDescriptionDTO(
id: storable.id,
createdAt: storable.createdAt,
updatedAt: storable.updatedAt,
resourceTypes: resourceTypes,
organizationRef: organizationRef,
);
}
extension PolicyDescriptionDTOMapper on PolicyDescriptionDTO {
PolicyDescription toDomain() => PolicyDescription(
storable: newStorable(id: id, createdAt: createdAt, updatedAt: createdAt),
resourceTypes: resourceTypes,
organizationRef: organizationRef,
);
}

View File

@@ -0,0 +1,20 @@
import 'package:pshared/data/dto/permissions/description/role.dart';
import 'package:pshared/models/permissions/descriptions/role.dart';
import 'package:pshared/models/storable.dart';
extension RoleDescriptionMapper on RoleDescription {
RoleDescriptionDTO toDTO() => RoleDescriptionDTO(
id: storable.id,
createdAt: storable.createdAt,
updatedAt: storable.updatedAt,
organizationRef: organizationRef,
);
}
extension RoleDescriptionDTOMapper on RoleDescriptionDTO {
RoleDescription toDomain() => RoleDescription(
storable: newStorable(id: id, createdAt: createdAt, updatedAt: updatedAt),
organizationRef: organizationRef,
);
}