Перейти к основному содержимому

Установка и использование

@rattus-orm/pinia – это отдельный пакет, не включающий в себя основную библиотеку. Чтобы начать пользоваться ORM с Pinia в вашем приложении Vue, нужно установить всё:

yarn add @rattus-orm/core @rattus-orm/pinia pinia

Базовый пример использования

Самый простой путь настроить Rattus ORM с Pinia – использовать встроенный Vue-плагин:

В отличие от интеграции с Vuex, это плагин именно для Vue, а не для Pinia.

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { installRattusORM } from "@rattus-orm/pinia";

const pinia = createPinia()

const app = createApp({ /* your root component */ })
app
  .use(pinia)
  .use(installRattusORM())
<template>
  <p>{{ user.email }}</p>
  <button type="button" @click="onClick">Update email</button>
</template>

<script lang="ts">
import { defineComponent } from 'vue'
import { Model } from '@rattus-orm/core'
import { UidField, StringField } from '@rattus-orm/core/field-types'
import { useRepositoryComputed } from '@rattus-orm/pinia'

class User extends Model {
  public static entity = 'user'
  
  @UidField()
  public id: string
  
  @StringField()
  public email: string
}

export default defineComponent({
  setup() {
    const { save, find } = useRepositoryComputed(User)
    
    save({ id: '1', email: 'test@test.com' })
    
    const onClick = () => {
      save({ id: '1', email: 'updated@test.com' })
    }
    
    const user = find('1')
    
    return {
      user,
      onClick,
    }
  }
})
</script>

Вам необязательно самостоятельно устанавливать плагин Pinia во Vue. Следующий вариант установит созданный экземпляр автоматически:

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { installRattusORM } from "@rattus-orm/pinia";

const pinia = createPinia()

const app = createApp({ /* your root component */ })
app
  // Передайте название базы данных и инстанс Pinia.
  // Pinia будет автоматически установлена во Vue.
  .use(installRattusORM({
    connection: 'entities',
    pinia,
  }))

Использование плагинов

Если вы хотите использовать плагины с базой данных, вы можете передать массив плагинов в объект конфигурации плагина. К примеру, плагин для валидации с Zod:

app
  .use(pinia)
  .use(installRattusORM({
    plugins: [RattusZodValidationPlugin()]
  }))