返回 Skill 列表
extension
分类: 开发与工程无需 API Key

nuxt-repositories

用于API访问的仓库模式,支持自动模型水合。在为API资源创建仓库、配置模型水合、添加自定义API方法或在应用程序配置中注册仓库时使用。

person作者: jakexiaohubgithub

Nuxt Repositories

Data access layer with CRUD operations and automatic model hydration.

Core Concepts

repositories.md - Complete repository patterns, registration, custom methods

Basic Repository

// app/repositories/PostRepository.ts
import { BaseRepository } from '#layers/base/app/repositories/base-repository'
import { ModelHydrator } from '#layers/base/app/repositories/hydrators/model-hydrator'
import Post from '~/models/Post'

export default class PostRepository extends BaseRepository<Post> {
  protected resource = '/api/posts'
  protected hydration = true
  protected hydrator = new ModelHydrator(Post)

  // Custom method
  async listByAuthor(authorUlid: string) {
    return this.jsonGet(`/api/authors/${authorUlid}/posts`)
  }
}

Registration

// app/app.config.ts
export default defineAppConfig({
  repositories: {
    posts: PostRepository,
    authors: AuthorRepository,
  },
})

Usage

// Get typed repository instance
const postApi = useRepository('posts')

// CRUD operations (returns hydrated models)
const { data: posts } = await postApi.list()
const { data: post } = await postApi.get('ulid123')
const { data: newPost } = await postApi.create({ title: 'Hello' })
await postApi.update('ulid123', { title: 'Updated' })
await postApi.delete('ulid123')

// With query params
const { data: posts } = await postApi.list({
  include: 'author,comments',
  filter: { status: 'published' },
})