insomnia/packages/insomnia-app/app/models/git-repository.ts
Dimitri Mitropoulos 5f4c19da35
[TypeScript] Phase 1 & 2 (#3370)
Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-05-12 18:35:00 +12:00

67 lines
1.4 KiB
TypeScript

import type { BaseModel } from './index';
import { database as db } from '../common/database';
import type { GitCredentials } from '../sync/git/git-vcs';
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,
};
}
interface BaseGitRepository {
needsFullClone: boolean;
uri: string;
credentials: GitCredentials | null;
author: {
name: string;
email: string;
};
uriNeedsMigration: boolean;
}
export function migrate(doc: GitRepository) {
return doc;
}
export function create(patch: Partial<GitRepository> = {}) {
return db.docCreate<GitRepository>(type, {
uriNeedsMigration: false,
...patch,
});
}
export async function getById(id: string) {
return db.getWhere<GitRepository>(type, { _id: id });
}
export function update(repo: GitRepository, patch: Partial<GitRepository>) {
return db.docUpdate<GitRepository>(repo, patch);
}
export function remove(repo: GitRepository) {
return db.remove(repo);
}
export function all() {
return db.all<GitRepository>(type);
}