# API `@deepkit/filesystem-database`

```shell
npm install @deepkit/filesystem-database
```

모든 지원되는 Deepkit ORM 데이터베이스를 파일 시스템 백엔드로 사용할 수 있게 해줍니다.

## API reference of @deepkit/filesystem-database

### mapFileEntityToFilesystemFile (function)

```typescript
(file: FilesystemModel): FilesystemFile
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/filesystem-database/src/database-adapter.ts#L38

### FilesystemModel (type)

```typescript
interface FilesystemModel {
    path: string;
    dir: string;
    type: FileType;
    size: number;
    created: Date;
    visibility: FileVisibility;
    lastModified?: Date;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/filesystem-database/src/database-adapter.ts#L6

### FileDataModel (type)

```typescript
interface FileDataModel {
    path: string;
    data: Uint8Array;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/filesystem-database/src/database-adapter.ts#L16

### FileEntity (class)

```typescript
@(entity.name())
export class FileEntity implements FilesystemModel {
    path: string & PrimaryKey;
    dir: string & Index;
    type: FileType;
    size: number;
    created: Date;
    visibility: FileVisibility;
    lastModified?: Date;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/filesystem-database/src/database-adapter.ts#L21

### FileDataEntity (class)

```typescript
@(entity.name())
export class FileDataEntity {
    path: string & PrimaryKey;
    data: Uint8Array;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/filesystem-database/src/database-adapter.ts#L32

### FilesystemOrmOptions (type)

```typescript
interface FilesystemOrmOptions {
    database: Database;
    entityClass?: ClassType<FilesystemModel>;
    entityDataClass?: ClassType<FileDataModel>;
    transactional?: boolean;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/filesystem-database/src/database-adapter.ts#L47

### FilesystemDatabaseAdapter (class)

```typescript
export class FilesystemDatabaseAdapter implements FilesystemAdapter {
    database: Database;
    entityClass: ClassType<FilesystemModel>;
    entityDataClass: ClassType<FileDataModel>;
    transactional: boolean;
    constructor(options: FilesystemOrmOptions);
    supportsVisibility();
    supportsDirectory();
    async close(): Promise<void>;
    async makeDirectory(path: string, visibility: FileVisibility, session?: DatabaseSession): Promise<void>;
    async setVisibility(path: string, visibility: FileVisibility): Promise<void>;
    async getVisibility(path: string): Promise<FileVisibility>;
    async files(path: string): Promise<FilesystemFile[]>;
    async delete(paths: string[]): Promise<void>;
    async deleteDirectory(path: string, reporter: Reporter): Promise<void>;
    async exists(paths: string[]): Promise<boolean>;
    async get(path: string): Promise<FilesystemFile | undefined>;
    async moveFile(source: string, destination: string): Promise<void>;
    async read(path: string, reporter: Reporter): Promise<Uint8Array>;
    async write(path: string, contents: Uint8Array, visibility: FileVisibility, reporter: Reporter): Promise<void>;
}
```

Source: https://github.com/deepkit/deepkit-framework/blob/master/packages/filesystem-database/src/database-adapter.ts#L69
