어댑터

어댑터 선택하기

피드백이 저장되는 위치 — 프로덕션에는 Prisma나 SQLite, 테스트와 데모에는 memory, 클라이언트 전용 구성에는 localStorage.

어댑터는 InstaFix 뒤에서 동작하는 저장 계층입니다. 모두 동일한 InstaFixStore 계약(메서드 6개)을 구현하므로, 위젯을 건드리지 않고도 서로 교체할 수 있습니다.

어댑터데이터 저장 위치사용 대상
@instafix/adapter-prismaPrisma를 통한 여러분의 데이터베이스프로덕션 — 이미 Prisma를 쓰고 있다면
@instafix/adapter-sqlitebetter-sqlite3를 통한 로컬 .db 파일프로덕션 — ORM도 별도 DB 서버도 필요 없을 때
@instafix/adapter-memory프로세스 내 배열테스트, 프리뷰, 일회성 데모
@instafix/adapter-localstorage방문자의 브라우저서버가 전혀 없는 클라이언트 사이드 데모와 프로토타입

어느 쪽을 골라야 할지 모르겠다면 — 프로젝트에 이미 Prisma가 세팅되어 있다면 그대로 쓰고, 아니면 SQLite가 별도 설치나 실행 없이 실질적인 영구 저장소를 제공합니다. npx github:gnoopy/instafix#cli-dist init을 실행하면 물어보고 선택한 대로 연결해 줍니다.

완전히 다른 백엔드가 필요하신가요(Prisma 없는 Postgres, MongoDB, DynamoDB 등)? @instafix/adapter-kit으로 직접 작성하세요.

스토어를 붙이는 두 가지 방법

서버 모드 — 위젯이 HTTP 엔드포인트와 통신하고, 엔드포인트가 스토어와 통신합니다. 프로덕션에서 사용하는 구성입니다:

// app/api/instafix/route.ts
import { createInstaFixHandler } from "@instafix/adapter-prisma";
import { prisma } from "@/lib/prisma";

export const { GET, POST, PATCH, DELETE, OPTIONS } = createInstaFixHandler({ prisma });

클라이언트 사이드 모드 — 위젯이 브라우저 안에서 스토어에 직접 쓰기 때문에 서버가 필요 없습니다:

import { initInstaFix } from "@instafix/widget";
import { LocalStorageStore } from "@instafix/adapter-localstorage";

initInstaFix({ store: new LocalStorageStore(), projectName: "my-demo" });

직접 어댑터를 작성하고 싶으신가요? @instafix/adapter-kit을 설치하세요: 스냅샷 기반 백엔드는 createCollectionStore로 완전한 스토어를 얻을 수 있고, 쿼리 기반 백엔드는 6개의 메서드를 직접 구현하며, 두 방식 모두 공유 conformance 스위트(테스트 44개)로 검증할 수 있습니다. 어댑터 작성하기를 참고하세요.

GitHub에서 수정

이 페이지의 목차