Installation and Usage
@rattus-orm/angular-rxjs
is a separate package that does not include the core library. To start
using ORM in your Angular application, you also need to install core package:
yarn add @rattus-orm/core @rattus-orm/angular-rxjs
Basic Usage Example
This package provides RattusOrmModule
with RattusContextService
. This
service is responsible for bootstrap and/or configuring database.
All you need to do is to import this module. If you have a standalone application, please consider adding module in your application config:
import { ApplicationConfig, importProvidersFrom } from '@angular/core';
import { RattusOrmModule } from "@rattus-orm/angular-rxjs";
export const appConfig: ApplicationConfig = {
providers: [
// ...
importProvidersFrom(RattusOrmModule.forRoot())
],
};
If you have your root app's module, just use normal import:
import { RattusOrmModule } from "@rattus-orm/angular-rxjs";
@NgModule({
imports: [RattusOrmModule.forRoot()],
})
export class AppModule {}
After that you can use RattusContextService
in your application. It is
just a wrapper around RattusContext
instance, which is used in other
integrations, like React or 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()
}
}
Using plugins
If you want to use plugins with a database, you can pass an array of plugins into the module config. For example, a validation plugin with 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 }),
],
}),
),
],
};