Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • coscine/frontend/apps/ui
1 result
Select Git revision
Loading items
Show changes
Commits on Source (31)
Showing
with 611 additions and 396 deletions
......@@ -2,6 +2,14 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Launch Chrome",
"request": "launch",
"type": "chrome",
"url": "https://d-sp16.devlef.campus.rwth-aachen.de/",
"webRoot": "${workspaceFolder}"
},
{
"type": "node",
"request": "launch",
......
......@@ -7,7 +7,8 @@
"Coscine",
"pinia",
"RWTH",
"vite"
"vite",
"Vuelidate"
],
"eslint.nodePath": ".yarn/sdks",
"prettier.prettierPath": ".yarn/sdks/prettier/index.js",
......
{
"name": "ui",
"version": "1.32.0",
"version": "2.0.0",
"private": true,
"scripts": {
"dev": "vite",
......@@ -13,8 +13,9 @@
"coverage": "vitest run --coverage"
},
"dependencies": {
"@coscine/api-client": "^2.12.0",
"@coscine/api-client": "^3.0.0",
"@coscine/form-generator": "^3.2.2",
"@dynamic-mapper/mapper": "^1.10.2",
"@pinia/testing": "^0.1.2",
"@rdfjs-elements/formats-pretty": "^0.6.3",
"@rdfjs/data-model": "^2.0.1",
......@@ -95,5 +96,5 @@
"vitest": "^0.32.2",
"vue-template-compiler": "^2.7.14"
},
"packageManager": "yarn@3.6.1"
"packageManager": "yarn@3.6.3"
}
......@@ -56,8 +56,8 @@ export default defineComponent({
return this.$route.meta?.requiresAuth ?? false;
},
areTosAccepted(): boolean | null {
return this.loginStore.areTosAccepted;
areTosAccepted(): boolean | null | undefined {
return this.userStore.user?.areToSAccepted;
},
localeChange(): string {
......@@ -91,10 +91,6 @@ export default defineComponent({
window.location.reload();
},
async isLoggedIn() {
await this.initializeAfterLogin();
},
async areTosAccepted() {
await this.initializeUser();
},
......@@ -110,25 +106,23 @@ export default defineComponent({
methods: {
async initialize() {
if (this.isLoggedIn) {
// Fetch Current TOS Version
if (!this.loginStore.currentTosVersion) {
await this.loginStore.retrieveCurrentTosVersion();
}
await this.initializeAfterLogin();
},
async initializeAfterLogin() {
if (this.isLoggedIn) {
await this.loginStore.retrieveTosAcceptanceStatus();
await this.initializeUser();
}
},
async initializeUser() {
if (this.areTosAccepted) {
if (!this.userStore.user) {
await this.userStore.retrieveUser();
this.userStore.setUserLanguagePreference();
await this.userStore.retrieveMemberOrganizations();
// Forward to ToS page. Don't change the logic bellow. Variable may be null or undefined.
if (this.areTosAccepted === false) {
this.$router.push({ name: "tos" });
}
}
},
......
......@@ -25,7 +25,7 @@
import { defineComponent } from "vue";
// import the main store
import useMainStore from "@/store/index";
import type { MaintenanceReturnObject } from "@coscine/api-client/dist/types/Coscine.Api.Notices";
import type { MaintenanceDto } from "@coscine/api-client/dist/types/Coscine.Api";
export default defineComponent({
setup() {
......@@ -34,7 +34,7 @@ export default defineComponent({
},
computed: {
maintenance(): MaintenanceReturnObject {
maintenance(): MaintenanceDto {
return this.mainStore.coscine.banner.maintenance;
},
visibility(): boolean {
......
......@@ -20,12 +20,12 @@
<div v-if="info" class="d-inline ml-1">
<!-- Information Circle Icon -->
<b-icon :id="`${labelFor}-info`" icon="info-circle" />
<b-icon :id="`${labelFor}Info`" icon="info-circle" />
<!-- Popover -->
<b-popover
over
:target="`${labelFor}-info`"
:target="`${labelFor}Info`"
triggers="hover focus"
placement="bottom"
>
......
......@@ -6,6 +6,7 @@
@change="$emit('input', value)"
@hidden="hideModal"
>
<div class="v_gapped_container">
<div>
{{ body }}
</div>
......@@ -13,11 +14,13 @@
<div class="mt-4">
<slot name="buttons" />
</div>
</div>
</b-modal>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import { type PropType, defineComponent } from "vue";
import type { TranslateResult } from "vue-i18n";
export default defineComponent({
name: "CoscineModal",
......@@ -28,11 +31,15 @@ export default defineComponent({
},
title: {
default: "",
type: String,
type: [String, Object] as PropType<
string | TranslateResult | null | undefined
>,
},
body: {
default: "",
type: String,
type: [String, Object] as PropType<
string | TranslateResult | null | undefined
>,
},
},
methods: {
......
......@@ -25,6 +25,9 @@
</template>
<script lang="ts">
import type { PropType } from "vue";
import type { TranslateResult } from "vue-i18n";
export default {
name: "LoadingSpinner",
......@@ -43,7 +46,7 @@ export default {
},
textAfter: {
default: "",
type: String,
type: [String, Object] as PropType<string | TranslateResult>,
},
},
};
......
......@@ -24,11 +24,11 @@ import useProjectStore from "@/modules/project/store";
// import the resource store
import useResourceStore from "@/modules/resource/store";
import type {
ProjectObject,
ResourceObject,
} from "@coscine/api-client/dist/types/Coscine.Api.Project";
import type { RawLocation } from "vue-router";
import type {
ProjectDto,
ResourceDto,
} from "@coscine/api-client/dist/types/Coscine.Api/api";
interface RouteLink {
to: RawLocation;
......@@ -82,7 +82,7 @@ export default defineComponent({
this.resource && this.resource.type
? `${this.$t(
"resourceTypes." +
this.resource.type.displayName +
this.resource.type.specificType +
".displayName"
)}: ${this.resource.displayName}`
: path,
......@@ -114,15 +114,15 @@ export default defineComponent({
return breadcrumbs;
},
parentProjects(): ProjectObject[] | null {
parentProjects(): ProjectDto[] | null {
return this.projectStore.currentParentProjects;
},
project(): ProjectObject | null {
project(): ProjectDto | null {
return this.projectStore.currentProject;
},
resource(): ResourceObject | null {
resource(): ResourceDto | null {
return this.resourceStore.currentResource;
},
},
......@@ -137,11 +137,11 @@ export default defineComponent({
if (
this.resource &&
this.resource.type &&
this.resource.type.displayName
this.resource.type.specificType
) {
title = title.replace(
`${this.$t(
"resourceTypes." + this.resource.type.displayName + ".displayName"
"resourceTypes." + this.resource.type.specificType + ".displayName"
)}: `,
""
);
......
......@@ -149,7 +149,7 @@ import useMainStore from "@/store/index";
import useLoginStore from "@/modules/login/store";
// import the user store
import useUserStore from "@/modules/user/store";
import type { UserObject } from "@coscine/api-client/dist/types/Coscine.Api.User";
import type { UserDto } from "@coscine/api-client/dist/types/Coscine.Api/api";
export default defineComponent({
setup() {
......@@ -180,7 +180,7 @@ export default defineComponent({
}
return false;
},
user(): null | UserObject {
user(): UserDto | null | undefined {
return this.userStore.user;
},
},
......
......@@ -35,12 +35,6 @@ import useProjectStore from "@/modules/project/store";
// import the resource store
import useResourceStore from "@/modules/resource/store";
import type {
ProjectObject,
ResourceObject,
RoleObject,
} from "@coscine/api-client/dist/types/Coscine.Api.Project";
import VueSidebarMenu from "vue-sidebar-menu";
import "vue-sidebar-menu/dist/vue-sidebar-menu.css";
import type {
......@@ -48,6 +42,11 @@ import type {
SidebarComponentItem,
SidebarHeaderItem,
} from "vue-sidebar-menu";
import type {
ProjectDto,
ResourceDto,
RoleDto,
} from "@coscine/api-client/dist/types/Coscine.Api/api";
Vue.use(VueSidebarMenu);
......@@ -67,7 +66,7 @@ export default defineComponent({
};
},
computed: {
currentUserRole(): RoleObject | undefined | null {
currentUserRole(): RoleDto | undefined | null {
return this.projectStore.currentUserRole;
},
menu(): Array<SidebarItem | SidebarComponentItem | SidebarHeaderItem> {
......@@ -84,10 +83,10 @@ export default defineComponent({
...this.settingsMenu,
];
},
project(): ProjectObject | null {
project(): ProjectDto | null {
return this.projectStore.currentProject;
},
projects(): ProjectObject[] | null {
projects(): ProjectDto[] | null {
return this.projectStore.topLevelProjects;
},
projectMenu(): Array<SidebarItem> {
......@@ -137,7 +136,7 @@ export default defineComponent({
}
return [];
},
resources(): ResourceObject[] | null {
resources(): ResourceDto[] | null {
return this.projectStore.currentResources;
},
resourcesMenu(): Array<SidebarItem> {
......@@ -158,7 +157,7 @@ export default defineComponent({
(resource.type
? `${this.$t(
"resourceTypes." +
resource.type.displayName +
resource.type.specificType +
".displayName"
)}: `
: "") + resource.displayName,
......@@ -175,7 +174,7 @@ export default defineComponent({
(resource.type
? `${this.$t(
"resourceTypes." +
resource.type.displayName +
resource.type.specificType +
".displayName"
)}: `
: "") + resource.displayName,
......@@ -240,7 +239,7 @@ export default defineComponent({
sidebarActive(): boolean {
return this.mainStore.sidebarActive;
},
subProjects(): ProjectObject[] | null {
subProjects(): ProjectDto[] | null {
return this.projectStore.currentSubProjects;
},
subProjectsMenu(): Array<SidebarItem> {
......
This diff is collapsed.
import { userMapper, PublicUserDto2ProjectRoleUserDto } from "@/mapping/user";
import {
type VisitedProjectObject,
type VisitedProjectDto,
type ProjectState,
} from "@/modules/project/types";
import { type RoleObject } from "@coscine/api-client/dist/types/Coscine.Api.Project";
import { testDiscipline, testOrganization, testUser } from "./testUser";
import type { RoleDto } from "@coscine/api-client/dist/types/Coscine.Api";
import { testDiscipline, testOrganization, getTestUser } from "./testUser";
export const testOwnerRole: RoleObject = {
export const testOwnerRole: RoleDto = {
id: "ownerRole",
displayName: "Owner",
description: "owner",
};
export const testMemberRole: RoleObject = {
export const testMemberRole: RoleDto = {
id: "memberRole",
displayName: "Member",
description: "member",
};
export const testGuestRole: RoleObject = {
export const testGuestRole: RoleDto = {
id: "guestRole",
displayName: "Guest",
description: "guest",
};
export const testSlug = "testProject";
export const testProject: VisitedProjectObject = {
export const testProject: VisitedProjectDto = {
id: "987654321",
displayName: "Test Project",
projectName: "Test Project Full",
......@@ -38,9 +43,15 @@ export const testProject: VisitedProjectObject = {
displayName: "Test Resource",
},
],
roles: [{ projectId: "987654321", role: testOwnerRole, user: testUser }],
roles: [
{
projectId: "987654321",
role: testOwnerRole,
user: userMapper.map(PublicUserDto2ProjectRoleUserDto, getTestUser()),
},
], // TODO: Beware the object types!
subProjects: [],
creator: testUser.id,
creator: getTestUser().id,
};
export const testProjectState: ProjectState = {
......
import {
type VisitedResourceObject,
type ResourceState,
import type {
VisitedResourceObject,
ResourceState,
} from "@/modules/resource/types";
import { parseRDFDefinition } from "@/modules/resource/utils/linkedData";
import {
type ResourceTypeStatus,
type ResourceTypeInformation,
} from "@coscine/api-client/dist/types/Coscine.Api.Resources";
import { radarApplicationProfile } from "./metadata/applicationProfile";
import { radarFixedValues } from "./metadata/fixedValues";
import { testDiscipline, testUser } from "./testUser";
import { testDiscipline, getTestUser } from "./testUser";
import type {
ResourceTypeInformationDto,
ResourceTypeStatus,
} from "@coscine/api-client/dist/types/Coscine.Api";
export const testResourceType: ResourceTypeInformation = {
displayName: "gitlab",
export const testResourceType: ResourceTypeInformationDto = {
specificType: "gitlab",
id: "123497",
canCreate: true,
canCreateLinks: true,
......@@ -28,11 +28,11 @@ export const testResourceType: ResourceTypeInformation = {
isQuotaAdjustable: true,
isQuotaAvailable: true,
resourceContent: {
entriesView: { columns: { always: [] } },
entriesView: { columns: { always: new Set<string>() } },
metadataView: { editableDataUrl: false, editableKey: false },
readOnly: false,
},
resourceCreate: {
resourceCreation: {
components: [],
},
status: "active" as ResourceTypeStatus,
......@@ -49,25 +49,26 @@ export const getTestResource: () => Promise<VisitedResourceObject> =
const resourceObject: VisitedResourceObject = {
applicationProfile: apUrl,
archived: false,
creator: testUser.id,
creator: getTestUser().id,
dateCreated: null,
deleted: false,
description: "TestResource",
disciplines: [testDiscipline],
displayName: "TestResource",
fixedValues: radarFixedValues,
fullApplicationProfile: ap,
id: "eeb8d803-46a1-49ba-a47c-81cd4f49cd65",
keywords: "",
license: null,
keywords: [],
license: {},
pid: "21.11102/eeb8d803-46a1-49ba-a47c-81cd4f49cd65",
rawApplicationProfile: ap,
resourceName: "TestResource",
resourceTypeOption: { id: "5234" },
storedColumns: null,
type: {
displayName: testResourceType.displayName,
specificType: testResourceType.specificType,
id: testResourceType.id,
options: {
gitLabOptions: {},
},
},
usageRights: "",
quota: null,
......
import { type UserState } from "@/modules/user/types";
import {
type DisciplineObject,
type OrganizationObject,
} from "@coscine/api-client/dist/types/Coscine.Api.Project";
import type { UserObject } from "@coscine/api-client/dist/types/Coscine.Api.User";
import type {
DisciplineDto,
UserDto,
UserOrganizationDto,
} from "@coscine/api-client/dist/types/Coscine.Api/api";
export const testOrganization: OrganizationObject = {
displayName: "TestOrg",
url: "example.com",
export const testOrganization: UserOrganizationDto = {
name: "TestOrg",
readOnly: true,
rorUri: "example.com",
};
export const testInstitute: OrganizationObject = {
displayName: "TestInstitute",
url: "example.com#institute",
export const testInstitute: UserOrganizationDto = {
name: "TestInstitute",
readOnly: true,
rorUri: "example.com#institute",
};
export const testDiscipline: DisciplineObject = {
export const testDiscipline: DisciplineDto = {
id: "1",
displayNameDe: "Test",
displayNameEn: "Test",
url: "example.com",
};
export const testLanguage = { id: "1", displayName: "en" };
export const testUser: UserObject = {
export const getTestUser: () => UserDto = () => {
return {
id: "d302cb44-c934-4b54-a581-9765cab96fca",
surname: "Coscine",
givenname: "Example",
lastName: "Coscine",
firstName: "Example",
displayName: "Coscine Example",
emailAddress: "example@example.com",
email: "example@example.com",
disciplines: [testDiscipline],
language: testLanguage,
organizations: [testOrganization],
institutes: [testInstitute],
};
};
export const testUserState: UserState = {
export const getTestUserState: () => UserState = () => {
return {
userProfile: {
contactChange: [],
disciplines: [testDiscipline],
languages: [testLanguage, { id: "2", displayName: "de" }],
userMemberships: [testOrganization, testInstitute],
organizations: [testOrganization, testInstitute],
organizations: [testOrganization],
institutes: [testInstitute],
titles: [
{
id: "1",
......@@ -49,6 +56,6 @@ export const testUserState: UserState = {
],
tokens: null,
},
user: testUser,
tokenValidityBounds: null,
user: getTestUser(),
};
};
......@@ -79,6 +79,7 @@ export default {
loading: "Laden...",
or: "ODER",
none: "k. A.",
gb: "{number} GB",
},
title: {
......
......@@ -77,6 +77,7 @@ export default {
loading: "Loading...",
or: "OR",
none: "n/a",
gb: "{number} GB",
},
title: {
......
import { MapperConfiguration, MappingPair } from "@dynamic-mapper/mapper";
import type { QuotaDto } from "@coscine/api-client/dist/types/Coscine.Api";
import { QuotaDimObject } from "@coscine/api-client/dist/types/Coscine.Api.Admin";
/**
* @deprecated - Delete this mapping pair once APIv2 is used globally.
*/
export const QuotaDimObject2QuotaDto = new MappingPair<
QuotaDimObject,
QuotaDto
>();
const configuration = new MapperConfiguration((cfg) => {
// Other maps
cfg.createAutoMap(QuotaDimObject2QuotaDto, {});
});
export const adminMapper = configuration.createMapper();
import { MapperConfiguration, MappingPair } from "@dynamic-mapper/mapper";
import type {
DisciplineDto,
DisciplineForProjectManipulationDto,
OrganizationDto,
OrganizationForProjectManipulationDto,
ProjectDto,
ProjectForUpdateDto,
VisibilityDto,
VisibilityForProjectManipulationDto,
} from "@coscine/api-client/dist/types/Coscine.Api";
export const ProjectDto2ProjectForUpdateDto = new MappingPair<
ProjectDto,
ProjectForUpdateDto
>();
export const VisibilityDto2VisibilityForProjectManipulationDto =
new MappingPair<VisibilityDto, VisibilityForProjectManipulationDto>();
export const DisciplineDto2DisciplineForProjectManipulationDto =
new MappingPair<DisciplineDto, DisciplineForProjectManipulationDto>();
export const OrganizationDto2OrganizationForProjectManipulationDto =
new MappingPair<OrganizationDto, OrganizationForProjectManipulationDto>();
const configuration = new MapperConfiguration((cfg) => {
cfg.createAutoMap(ProjectDto2ProjectForUpdateDto, {
disciplines: (opt) =>
opt.mapFromUsing(
(e) => e.disciplines,
DisciplineDto2DisciplineForProjectManipulationDto
),
visibility: (opt) =>
opt.mapFromUsing(
(e) => e.visibility,
VisibilityDto2VisibilityForProjectManipulationDto
),
organizations: (opt) =>
opt.mapFromUsing(
(e) => e.organizations,
OrganizationDto2OrganizationForProjectManipulationDto
),
});
// Other maps
cfg
.createAutoMap(VisibilityDto2VisibilityForProjectManipulationDto, {})
.forSourceMember("displayName", (opt) => opt.ignore());
cfg.createAutoMap(DisciplineDto2DisciplineForProjectManipulationDto, {});
cfg.createAutoMap(OrganizationDto2OrganizationForProjectManipulationDto, {});
});
export const projectMapper = configuration.createMapper();
import { MapperConfiguration, MappingPair } from "@dynamic-mapper/mapper";
import type {
DisciplineDto,
DisciplineForResourceManipulationDto,
GitLabOptionsDto,
GitlabResourceTypeOptionsForCreationDto,
GitlabResourceTypeOptionsForUpdateDto,
LicenseDto,
LicenseForResourceManipulationDto,
QuotaDto,
QuotaForManipulationDto,
RdsOptionsDto,
RdsResourceTypeOptionsForManipulationDto,
RdsS3OptionsDto,
RdsS3ResourceTypeOptionsForManipulationDto,
RdsS3WormOptionsDto,
RdsS3WormResourceTypeOptionsForManipulationDto,
ResourceDto,
ResourceForUpdateDto,
ResourceTypeInformationDto,
ResourceTypeOptionsDto,
ResourceTypeOptionsForCreationDto,
ResourceTypeOptionsForUpdateDto,
VisibilityDto,
VisibilityForResourceManipulationDto,
} from "@coscine/api-client/dist/types/Coscine.Api";
import { CoscineResourceTypes } from "@/modules/resource/types";
export const LicenseDto2LicenseForResourceManipulationDto = new MappingPair<
LicenseDto,
LicenseForResourceManipulationDto
>();
export const VisibilityDto2VisibilityForResourceManipulationDto =
new MappingPair<VisibilityDto, VisibilityForResourceManipulationDto>();
export const DisciplineDto2DisciplineForResourceManipulationDto =
new MappingPair<DisciplineDto, DisciplineForResourceManipulationDto>();
export const ResourceDto2ResourceForUpdateDto = new MappingPair<
ResourceDto,
ResourceForUpdateDto
>();
export const ResourceTypeOptionsDto2ResourceTypeOptionsForUpdateDto =
new MappingPair<ResourceTypeOptionsDto, ResourceTypeOptionsForUpdateDto>();
export const QuotaDto2QuotaForManipulationDto = new MappingPair<
QuotaDto,
QuotaForManipulationDto
>();
export const GitLabOptionsDto2GitlabResourceTypeOptionsForUpdateDto =
new MappingPair<GitLabOptionsDto, GitlabResourceTypeOptionsForUpdateDto>();
export const RdsOptionsDto2RdsResourceTypeOptionsForManipulationDto =
new MappingPair<RdsOptionsDto, RdsResourceTypeOptionsForManipulationDto>();
export const RdsS3OptionsDto2RdsS3ResourceTypeOptionsForManipulationDto =
new MappingPair<
RdsS3OptionsDto,
RdsS3ResourceTypeOptionsForManipulationDto
>();
export const RdsS3WormOptionsDto2RdsS3WormResourceTypeOptionsForManipulationDto =
new MappingPair<
RdsS3WormOptionsDto,
RdsS3WormResourceTypeOptionsForManipulationDto
>();
export const ResourceTypeInformationDto2ResourceTypeOptionsForCreationDto =
new MappingPair<
ResourceTypeInformationDto,
ResourceTypeOptionsForCreationDto
>();
const configuration = new MapperConfiguration((cfg) => {
cfg.createAutoMap(ResourceDto2ResourceForUpdateDto, {
license: (opt) =>
opt.mapFromUsing(
(e) => e.license,
LicenseDto2LicenseForResourceManipulationDto
),
visibility: (opt) =>
opt.mapFromUsing(
(e) => e.visibility,
VisibilityDto2VisibilityForResourceManipulationDto
),
disciplines: (opt) =>
opt.mapFromUsing(
(e) => e.disciplines,
DisciplineDto2DisciplineForResourceManipulationDto
),
resourceTypeOptions: (opt) =>
opt.mapFromUsing(
(e) => e.type?.options,
ResourceTypeOptionsDto2ResourceTypeOptionsForUpdateDto
),
});
// Resource type options maps
cfg.createAutoMap(ResourceTypeOptionsDto2ResourceTypeOptionsForUpdateDto, {
linkedResourceTypeOptions: (opt) => opt.ignore(),
gitlabResourceTypeOptions: (opt) =>
opt
.mapFromUsing(
(e) => e.gitLabOptions,
GitLabOptionsDto2GitlabResourceTypeOptionsForUpdateDto
)
.condition((con) => con.gitLabOptions !== undefined),
rdsResourceTypeOptions: (opt) =>
opt
.mapFromUsing(
(e) => e.rdsOptions,
RdsOptionsDto2RdsResourceTypeOptionsForManipulationDto
)
.condition((con) => con.rdsOptions !== undefined),
rdsS3ResourceTypeOptions: (opt) =>
opt
.mapFromUsing(
(e) => e.rdsS3Options,
RdsS3OptionsDto2RdsS3ResourceTypeOptionsForManipulationDto
)
.condition((con) => con.rdsS3Options !== undefined),
rdsS3WormResourceTypeOptions: (opt) =>
opt
.mapFromUsing(
(e) => e.rdsS3WormOptions,
RdsS3WormOptionsDto2RdsS3WormResourceTypeOptionsForManipulationDto
)
.condition((con) => con.rdsS3WormOptions !== undefined),
});
cfg.createMap(ResourceTypeInformationDto2ResourceTypeOptionsForCreationDto, {
linkedResourceTypeOptions: (opt) =>
opt
.preCondition(
(rti) => rti.generalType === CoscineResourceTypes.LinkedData.General
)
.mapFrom((rti) =>
rti.generalType === CoscineResourceTypes.LinkedData.General
? {}
: undefined
),
gitlabResourceTypeOptions: (opt) =>
opt
.preCondition(
(rti) => rti.generalType === CoscineResourceTypes.Gitlab.General
)
.mapFrom((rti) =>
rti.generalType === CoscineResourceTypes.Gitlab.General
? ({} as GitlabResourceTypeOptionsForCreationDto)
: undefined
),
rdsResourceTypeOptions: (opt) =>
opt
.preCondition(
(rti) => rti.generalType === CoscineResourceTypes.Rds.General
)
.mapFrom((rti) =>
rti.generalType === CoscineResourceTypes.Rds.General ? {} : undefined
),
rdsS3ResourceTypeOptions: (opt) =>
opt
.preCondition(
(rti) => rti.generalType === CoscineResourceTypes.RdsS3.General
)
.mapFrom((rti) =>
rti.generalType === CoscineResourceTypes.RdsS3.General
? {}
: undefined
),
rdsS3WormResourceTypeOptions: (opt) =>
opt
.preCondition(
(rti) => rti.generalType === CoscineResourceTypes.RdsS3Worm.General
)
.mapFrom((rti) =>
rti.generalType === CoscineResourceTypes.RdsS3Worm.General
? {}
: undefined
),
});
cfg.createAutoMap(GitLabOptionsDto2GitlabResourceTypeOptionsForUpdateDto, {});
cfg.createAutoMap(RdsOptionsDto2RdsResourceTypeOptionsForManipulationDto, {
size: (opt) =>
opt.mapFromUsing((e) => e.size, QuotaDto2QuotaForManipulationDto),
});
cfg.createAutoMap(
RdsS3OptionsDto2RdsS3ResourceTypeOptionsForManipulationDto,
{
size: (opt) =>
opt.mapFromUsing((e) => e.size, QuotaDto2QuotaForManipulationDto),
}
);
cfg.createAutoMap(
RdsS3WormOptionsDto2RdsS3WormResourceTypeOptionsForManipulationDto,
{
size: (opt) =>
opt.mapFromUsing((e) => e.size, QuotaDto2QuotaForManipulationDto),
}
);
// Other maps
cfg.createAutoMap(LicenseDto2LicenseForResourceManipulationDto, {});
cfg
.createAutoMap(VisibilityDto2VisibilityForResourceManipulationDto, {})
.forSourceMember("displayName", (opt) => opt.ignore());
cfg.createAutoMap(DisciplineDto2DisciplineForResourceManipulationDto, {});
cfg.createAutoMap(QuotaDto2QuotaForManipulationDto, {});
});
export const resourceMapper = configuration.createMapper();