repoweaver
Version:
A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies
77 lines • 2.81 kB
TypeScript
export interface Installation {
id: number;
account: string;
accountType: string;
suspended: boolean;
createdAt: Date;
updatedAt: Date;
}
export interface UserSession {
userId: number;
login: string;
accessToken: string;
installationId?: number;
createdAt: Date;
}
export interface RepositoryConfig {
installationId: number;
repository: string;
templates: string[];
mergeStrategy: 'overwrite' | 'merge' | 'skip';
excludePatterns: string[];
autoUpdate: boolean;
createdAt: Date;
updatedAt: Date;
}
export interface Job {
id?: number;
type: string;
installationId: number;
targetRepository: string;
templateRepository: string;
status: 'pending' | 'running' | 'completed' | 'failed';
result?: any;
error?: string;
createdAt: Date;
updatedAt?: Date;
}
export interface TemplateConfiguration {
templateRepository: string;
targetRepository: string;
installationId: number;
autoUpdate: boolean;
}
export interface InstallationConfig {
installationId: number;
autoConfigureTemplates: boolean;
defaultTemplates: string[];
}
export declare class Database {
private db;
private runAsync;
private getAsync;
private allAsync;
constructor(dbPath: string);
initialize(): Promise<void>;
private createTables;
createInstallation(installation: Omit<Installation, 'suspended' | 'createdAt' | 'updatedAt'>): Promise<void>;
deleteInstallation(installationId: number): Promise<void>;
suspendInstallation(installationId: number): Promise<void>;
unsuspendInstallation(installationId: number): Promise<void>;
createUserSession(session: UserSession): Promise<void>;
getUserSessionByToken(accessToken: string): Promise<UserSession | null>;
deleteUserSession(userId: number): Promise<void>;
addRepositoryToInstallation(installationId: number, repository: string, fullName: string): Promise<void>;
removeRepositoryFromInstallation(installationId: number, repository: string): Promise<void>;
saveRepositoryConfig(config: RepositoryConfig): Promise<void>;
getRepositoryConfig(installationId: number, repository: string): Promise<RepositoryConfig | null>;
deleteRepositoryConfig(repository: string): Promise<void>;
queueJob(job: Job): Promise<void>;
getQueuedJobs(limit?: number): Promise<Job[]>;
updateJobStatus(jobId: number, status: string, result?: any, error?: string): Promise<void>;
getTemplateConfigurations(templateRepository: string): Promise<TemplateConfiguration[]>;
getInstallationConfig(installationId: number): Promise<InstallationConfig | null>;
saveInstallationConfig(config: InstallationConfig): Promise<void>;
close(): Promise<void>;
}
//# sourceMappingURL=database.d.ts.map