# Univer Bases API

> Univer Bases 애플리케이션에서 Facade API를 사용하는 방법을 알아봅니다.

- Human documentation: [https://docs.univer.ai/ko-KR/guides/bases/features/core/bases-api](https://docs.univer.ai/ko-KR/guides/bases/features/core/bases-api)

- Agent Markdown: [https://docs.univer.ai/ko-KR/guides/bases/features/core/bases-api.md](https://docs.univer.ai/ko-KR/guides/bases/features/core/bases-api.md)

- Requested language: `ko-KR`

- Content language: `ko-KR`

- Documentation version: `1.0.4`

- Source: [bases/features/core/bases-api.ko-KR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/bases/features/core/bases-api.ko-KR.mdx)

---

Facade API는 Bases 모델 위에 애플리케이션용 계층을 제공합니다. Base, 테이블, 필드, 레코드, 뷰, 필터, 정렬, 그룹, 선택 영역을 만들거나 UI를 탐색하는 등의 일반적인 작업에 사용하세요.

> [!WARNING: 주의]
> Base 모델 변경은 동기식입니다. UI 활성화 메서드는 Promise를 반환하므로 `await`하세요.

## Facade 진입점 활성화

애플리케이션에서 사용하는 각 Bases 기능의 Facade 진입점을 가져옵니다.

```ts
import { FUniver } from '@univerjs/core/facade'
import '@univerjs-pro/bases/facade'
import '@univerjs-pro/bases-ui/facade'
```

Univer 인스턴스와 필수 플러그인을 등록한 다음 API 객체를 만듭니다.

```ts
const univerAPI = FUniver.newAPI(univer)
```

## Base 생성 및 읽기

Facade 계층을 통해 Base 단위를 만들려면 `createBase`를 사용합니다. 하위 수준 설정 코드에서는 `univer.createUnit(UniverInstanceType.UNIVER_BASE, snapshot)`으로 단위를 만듭니다.

```ts
const base = univerAPI.createBase({
  id: 'base-demo',
  name: 'Base Demo',
})

const activeBase = univerAPI.getActiveBase()
const sameBase = univerAPI.getBase(base.getId())
```

## 테이블 생성

```ts
const table = base.insertTable('Tasks', { primaryFieldName: 'Title' })
const status = table.addField('Status', univerAPI.Enum.BaseFieldType.SingleSelect)
```

## 레코드 작업

```ts
const record = table.addRecord({
  Title: 'Write docs',
  Status: 'In progress',
}, univerAPI.Enum.BaseFieldKeyEnum.Name)

record.setValue(status.getId(), 'Done')
```

## UI 상태 작업

`@univerjs-pro/bases-ui/facade`는 테이블 및 뷰 활성화, 선택, 스크롤, 편집, 패널을 위한 UI API를 추가합니다.

```ts
const baseUI = univerAPI.getBaseUI()
const view = table.getViews()[0]
if (!view) throw new Error('No table view')
await baseUI.activateTable(table.getId())
await baseUI.activateView(view.getId())
baseUI.setSelection({
  type: 'grid-record',
  tableId: table.getId(),
  viewId: view.getId(),
  recordId: record.getId(),
})
```

## 참고 자료

* [General API](https://docs.univer.ai/ko-KR/guides/bases/features/core/general-api.md)
* [Bases Facade 레퍼런스](https://docs.univer.ai/ko-KR/reference/facade/base.md)
* [Base 스냅샷 모델](https://docs.univer.ai/ko-KR/guides/bases/model/base-snapshot.md)
* [테이블, 필드 및 레코드](https://docs.univer.ai/ko-KR/guides/bases/model/tables-fields-records.md)
* [뷰](https://docs.univer.ai/ko-KR/guides/bases/model/views.md)
