Skip to content

Commit

Permalink
feat(migrateV1): also migrate what little old issue data we have
Browse files Browse the repository at this point in the history
  • Loading branch information
johannesjo committed Dec 16, 2018
1 parent 36b02c6 commit 06938dd
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 10 deletions.
59 changes: 56 additions & 3 deletions src/app/core/migrate/migrate.service.ts
Expand Up @@ -15,6 +15,7 @@ import { initialTaskState } from '../../tasks/store/task.reducer';
import { EntityState } from '@ngrx/entity';
import { DEFAULT_TASK, Task } from '../../tasks/task.model';
import * as moment from 'moment';
import { JiraIssue } from '../../issue/jira/jira-issue/jira-issue.model';

@Injectable({
providedIn: 'root'
Expand Down Expand Up @@ -101,9 +102,61 @@ export class MigrateService {
});

const doneTaskState = this._transformTasks(op.data.doneBacklogTasks);
await this._persistenceService.saveToTaskArchiveForProject(op.id, {
...doneTaskState,
});
await this._persistenceService.saveToTaskArchiveForProject(op.id, doneTaskState);

const issueState = this._getJiraIssuesFromTasks(op.data.tasks.concat(op.data.backlogTasks, op.data.doneBacklogTasks));
if (issueState) {
await this._persistenceService.saveIssuesForProject(op.id, 'JIRA', issueState);
}
}

private _getJiraIssuesFromTasks(oldTasks: OldTask[]): EntityState<JiraIssue> | null {
const flatTasks = oldTasks
.filter(t => !!t)
.reduce((acc, t) => acc.concat(t.subTasks), [])
.filter(t => !!t);
const transformedIssues = flatTasks
.filter(t => t.orignalId && t.originalType === 'JIRA')
.map(this._transformJiraIssue);

if (!transformedIssues || !transformedIssues.length) {
return null;
}

return {
entities: transformedIssues.reduce((acc, issue) => {
return {
...acc,
[issue.id]: issue
};
}, {}),
ids: transformedIssues.map(issue => issue.id),
};
}

private _transformJiraIssue(ot: OldTask): JiraIssue {
return {
// copied data
key: ot.originalKey,
id: ot.originalId,
summary: ot.title,
timeestimate: ot.originalEstimate,
timespent: 0,
description: ot.notes,
updated: ot.originalUpdated,
url: ot.originalLink,

// not enough data on old model
components: [],
status: null,
attachments: [],
assignee: null,
changelog: null,

// new properties
comments: [],
wasUpdated: false,
};
}

private _transformTasks(oldTasks: OldTask[]): EntityState<Task> {
Expand Down
8 changes: 1 addition & 7 deletions src/app/issue/jira/jira-issue/store/jira-issue.reducer.ts
Expand Up @@ -8,8 +8,6 @@ import { IssueProviderKey } from '../../../issue';
export const JIRA_ISSUE_FEATURE_NAME: IssueProviderKey = 'JIRA';

export interface JiraIssueState extends EntityState<JiraIssue> {
// additional entities state properties
currentJiraIssueId: string | null;
}

export const jiraIssueAdapter: EntityAdapter<JiraIssue> = createEntityAdapter<JiraIssue>();
Expand All @@ -27,14 +25,10 @@ export const selectAllJiraIssues = createSelector(selectJiraIssueFeatureState, s
// select the total user count
export const selectJiraIssueTotal = createSelector(selectJiraIssueFeatureState, selectTotal);

export const selectCurrentJiraIssue = createSelector(selectJiraIssueFeatureState, state => state.currentJiraIssueId);


// REDUCER
// -------
export const initialJiraIssueState: JiraIssueState = jiraIssueAdapter.getInitialState({
currentJiraIssueId: null,
});
export const initialJiraIssueState: JiraIssueState = jiraIssueAdapter.getInitialState({});

export function jiraIssueReducer(
state: JiraIssueState = initialJiraIssueState,
Expand Down

0 comments on commit 06938dd

Please sign in to comment.