Установка и использование
@rattus-orm/angular-rxjs
– это отдельный пакет, не включающий в себя основную библиотеку. Чтобы использовать
ORM в вашем приложении Angular, нужно установить также и её:
yarn add @rattus-orm/core @rattus-orm/angular-rxjs
Базовый пример использования
Этот пакет содержит RattusOrmModule
с RattusContextService
. Именно этот сервис отвечает
за создание и/или настройку базы данных.
Всё, что вам нужно – импортировать этот модуль. Если у вас standalone-приложение, вы можете добавить модуль в конфигурацию приложения:
import { ApplicationConfig, importProvidersFrom } from '@angular/core';
import { RattusOrmModule } from "@rattus-orm/angular-rxjs";
export const appConfig: ApplicationConfig = {
providers: [
// ...
importProvidersFrom(RattusOrmModule.forRoot())
],
};
Если же у вас есть корневой модуль приложения, добавьте импорт туда:
import { RattusOrmModule } from "@rattus-orm/angular-rxjs";
@NgModule({
imports: [RattusOrmModule.forRoot()],
})
export class AppModule {}
После этого вы можете использовать RattusContextService
в приложении.
Фактически, это обёртка над обычным RattusContext
, который используется
в других интеграциях, например, в React или Vue:
import User from './models/User'
@Component({
selector: 'app-root',
standalone: true,
imports: [AsyncPipe],
template: '<p>{{ (user | async)?.email }}</p>',
})
export class AppComponent {
public user: Item<User>
constructor(
protected readonly contextService: RattusContextService,
) {
const userRepo = contextService.getRepository(User)
this.user = repo.query().where('id', '1').first()
}
}
Использование плагинов
Если вы хотите использовать плагины с базой данных, вы можете передать массив плагинов в пропс провайдера. К примеру, плагин для валидации с Zod:
import { ApplicationConfig, importProvidersFrom } from '@angular/core';
import { RattusOrmModule } from "@rattus-orm/angular-rxjs";
import { RattusZodValidationPlugin } from '@rattus-orm/plugin-zod-validate'
export const appConfig: ApplicationConfig = {
providers: [
// ...
importProvidersFrom(
RattusOrmModule.forRoot({
plugins: [
RattusZodValidationPlugin({ strict: true }),
],
}),
),
],
};