Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/mappers/PlatformMapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import Platform from "../models/Platform.ts";

export default class PlatformMapper extends AbstractMapper<PlatformDto> {
private platform: Platform;
private static platformMapping: FieldMapping = {
static platformMapping: FieldMapping = {
model: {
type: "string",
label: "Model",
Expand Down
26 changes: 11 additions & 15 deletions src/models/Operator.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import User from "./User.ts";
import { FieldMapping, ProcessedFieldMapping } from "../types/index.ts";
import Platform from "../models/Platform.ts";
import UserMapper from "../mappers/UserMapper.ts";
import FeedMapper from "../mappers/FeedMapper.ts";
import SourceMapper from "../mappers/SourceMapper.ts";
import PlatformMapper from "../mappers/PlatformMapper.ts";
import PostMapper from "../mappers/PostMapper.ts";

/**
Expand Down Expand Up @@ -86,13 +86,8 @@ export default class Operator {
return permissions;
}

public getFieldMapping(
user: User,
model: string,
instance?: object,
): ProcessedFieldMapping {
public getFieldMapping(user: User, model: string): ProcessedFieldMapping {
let rawFieldMapping: FieldMapping | undefined = undefined;
let processedFieldMapping: ProcessedFieldMapping = {};
switch (model) {
case "user":
rawFieldMapping = UserMapper.userMapping;
Expand All @@ -107,14 +102,7 @@ export default class Operator {
break;

case "platform":
if (!instance || !(instance instanceof Platform)) {
throw user.log.error(
"Operator.getFieldMapping",
"Platform is required",
);
}
const platform = instance as Platform;
rawFieldMapping = platform.mapper.mapping;
rawFieldMapping = PlatformMapper.platformMapping;
break;

case "post":
Expand All @@ -124,6 +112,14 @@ export default class Operator {
if (!rawFieldMapping) {
throw user.log.error("Operator.getFieldMapping: no such mapping", model);
}
return this.processFieldMapping(user, rawFieldMapping);
}

public processFieldMapping(
user: User,
rawFieldMapping: FieldMapping,
): ProcessedFieldMapping {
let processedFieldMapping: ProcessedFieldMapping = {};
const permissions = this.getPermissions(user);
for (const fieldName of Object.keys(rawFieldMapping)) {
const rawField = rawFieldMapping[fieldName];
Expand Down
21 changes: 8 additions & 13 deletions src/services/Fairpost.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,24 +175,19 @@ class Fairpost {
if (!user) {
throw new Error("user is required for command " + command);
}
if (!args.model) {
if (!args.model && !args.platform) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: model",
"Missing argument: model or platform",
);
}
let instance: object | undefined = undefined;
if (args.model === "platform") {
if (!args.platform) {
throw user.log.error(
"CommandHandler " + command,
"Missing argument: platform",
);
}
instance = user.getPlatform(args.platform);
if (args.platform) {
const platform = user.getPlatform(args.platform);
const rawFieldMapping = platform.settings;
output = operator.processFieldMapping(user, rawFieldMapping);
} else if (args.model) {
output = operator.getFieldMapping(user, args.model);
}

output = operator.getFieldMapping(user, args.model, instance);
break;
}

Expand Down
Loading