Skip to content

Commit 20f1b36

Browse files
committed
refactor(chrono): use tmp repos on CatFile & HashFile use-case
1 parent 9b74881 commit 20f1b36

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

packages/chrono/src/ChronoApp.ts

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import IDrive from './gateways/IDrive'
22
import IHash from './gateways/IHash'
3-
import BlobRepositoryImpl from './repositories/implementations/LocalBlobRepository'
3+
import LocalBlobRepository from './repositories/implementations/LocalBlobRepository'
44
import IBlobRepository from './repositories/IBlobRepository'
55
import IObjectRepository from './repositories/IObjectRepository'
6-
import ObjectRepositoryImpl from './repositories/implementations/LocalObjectRepository'
6+
import LocalObjectRepository from './repositories/implementations/LocalObjectRepository'
77
import CatFileUseCase from './use-cases/CatFileUseCase'
88
import HashFileUseCase from './use-cases/HashFileUseCase'
99
import InitUseCase from './use-cases/InitUseCase'
@@ -12,12 +12,23 @@ export default class ChronoApp {
1212
private readonly objectRepository: IObjectRepository
1313
private readonly blobRepository: IBlobRepository
1414

15+
private readonly objectTemporaryRepository: IObjectRepository
16+
private readonly blobTemporaryRepository: IBlobRepository
17+
1518
constructor(
1619
private readonly drive: IDrive,
1720
private readonly hash: IHash
1821
) {
19-
this.objectRepository = new ObjectRepositoryImpl(drive, hash)
20-
this.blobRepository = new BlobRepositoryImpl(drive, hash)
22+
this.objectRepository = new LocalObjectRepository(drive, hash)
23+
this.blobRepository = new LocalBlobRepository(drive, hash)
24+
25+
this.objectTemporaryRepository = new LocalObjectRepository(
26+
drive,
27+
hash,
28+
'.chrono/tmp/objects'
29+
)
30+
31+
this.blobTemporaryRepository = new LocalBlobRepository(drive, hash, '.chrono/tmp/blobs')
2132
}
2233

2334
public async init() {
@@ -27,13 +38,17 @@ export default class ChronoApp {
2738
}
2839

2940
public async hashFile(path: string) {
30-
const useCase = new HashFileUseCase(this.drive, this.objectRepository, this.blobRepository)
41+
const useCase = new HashFileUseCase(
42+
this.drive,
43+
this.objectTemporaryRepository,
44+
this.blobTemporaryRepository
45+
)
3146

3247
return useCase.execute({ path })
3348
}
3449

3550
public async catFile(objectHash: string) {
36-
const useCase = new CatFileUseCase(this.objectRepository)
51+
const useCase = new CatFileUseCase(this.objectTemporaryRepository)
3752

3853
return useCase.execute({ objectHash })
3954
}

packages/chrono/src/repositories/implementations/LocalBlobRepository.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import IBlobRepository from '../IBlobRepository'
55
export default class LocalBlobRepository implements IBlobRepository {
66
constructor(
77
private readonly drive: IDrive,
8-
private readonly hash: IHash
8+
private readonly hash: IHash,
9+
private readonly directory = '.chrono/blobs'
910
) {}
1011

1112
public save: IBlobRepository['save'] = async (content) => {
@@ -14,7 +15,7 @@ export default class LocalBlobRepository implements IBlobRepository {
1415
const startHash = blobHash.slice(0, 2)
1516
const endHash = blobHash.slice(2)
1617

17-
const folderPath = this.drive.resolve('.chrono', 'blobs', startHash)
18+
const folderPath = this.drive.resolve(this.directory, startHash)
1819
const filePath = this.drive.resolve(folderPath, endHash)
1920

2021
if (!(await this.drive.exists(folderPath))) {
@@ -30,7 +31,7 @@ export default class LocalBlobRepository implements IBlobRepository {
3031
const startHash = blobHash.slice(0, 2)
3132
const endHash = blobHash.slice(2)
3233

33-
const folderPath = this.drive.resolve('.chrono', 'blobs', startHash)
34+
const folderPath = this.drive.resolve(this.directory, startHash)
3435
const filePath = this.drive.resolve(folderPath, endHash)
3536

3637
if (!(await this.drive.exists(filePath))) {

packages/chrono/src/repositories/implementations/LocalObjectTemporaryRepository.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)