insomnia/packages/insomnia-app/app/models/git-repository.js

61 lines
1.3 KiB
JavaScript
Raw Normal View History

2020-04-26 20:33:39 +00:00
// @flow
import type { BaseModel } from './index';
import * as db from '../common/database';
import type { GitCredentials } from '../sync/git/git-vcs';
2020-04-26 20:33:39 +00:00
type BaseGitRepository = {
needsFullClone: boolean,
uri: string,
credentials: GitCredentials | null,
2020-04-26 20:33:39 +00:00
author: {
name: string,
email: string,
},
uriNeedsMigration: boolean,
2020-04-26 20:33:39 +00:00
};
export type GitRepository = BaseModel & BaseGitRepository;
export const name = 'Git Repository';
export const type = 'GitRepository';
export const prefix = 'git';
export const canDuplicate = false;
export const canSync = false;
export function init(): BaseGitRepository {
return {
needsFullClone: false,
uri: '',
credentials: null,
author: {
name: '',
email: '',
},
uriNeedsMigration: true,
2020-04-26 20:33:39 +00:00
};
}
export function migrate(doc: GitRepository): GitRepository {
2020-04-26 20:33:39 +00:00
return doc;
}
export function create(patch: $Shape<GitRepository> = {}): Promise<GitRepository> {
return db.docCreate(type, {
uriNeedsMigration: false,
...patch,
});
2020-04-26 20:33:39 +00:00
}
export function update(repo: GitRepository, patch: $Shape<GitRepository>): Promise<GitRepository> {
2020-04-26 20:33:39 +00:00
return db.docUpdate(repo, patch);
}
export function remove(repo: GitRepository): Promise<void> {
return db.remove(repo);
}
export function all(): Promise<Array<GitRepository>> {
return db.all(type);
}