@arcaelas/dynamite¶

Modernes Decorator-First ORM für AWS DynamoDB TypeScript Decorators | Typsichere Beziehungen | Automatische Tabellensync | Minimaler Boilerplate
Funktionen¶
- Decorator-First Design - Modelle mit TypeScript Decorators definieren
- Typsichere Beziehungen - HasMany, BelongsTo, ManyToMany mit vollständiger Typisierung
- Automatische Tabellensync - Tabellen und Indizes werden automatisch erstellt
- Validierung & Transformation - Integrierte Decorators für Datenverarbeitung
- Soft Deletes - @DeleteAt Decorator für wiederherstellbare Datensätze
- Transaktionen - Volle Transaktionsunterstützung mit Rollback
Schnellstart¶
import { Dynamite, Table, PrimaryKey, Default, CreatedAt } from '@arcaelas/dynamite';
// Definiere dein Modell
class User extends Table<User> {
@PrimaryKey()
@Default(() => crypto.randomUUID())
declare id: string;
declare name: string;
declare email: string;
@CreatedAt()
declare created_at: Date;
}
// Konfigurieren und verbinden
const dynamite = new Dynamite({
region: 'us-east-1',
tables: [User]
});
dynamite.connect();
await dynamite.sync();
// Erstellen
const user = await User.create({
name: 'John Doe',
email: 'john@example.com'
});
// Abfragen
const users = await User.where('name', 'John Doe');
// Aktualisieren
user.email = 'newemail@example.com';
await user.save();
// Löschen
await user.destroy();
Decorators¶
| Decorator | Beschreibung |
|---|---|
@PrimaryKey() | Partitionsschlüssel |
@Index() | Globaler Sekundärindex |
@Default(value) | Standardwert (statisch oder Funktion) |
@Validate(fn) | Validierung beim Setzen |
@Mutate(fn) | Transformation beim Setzen |
@CreatedAt() | Auto-Setzen beim Erstellen |
@UpdatedAt() | Auto-Setzen beim Aktualisieren |
@DeleteAt() | Soft Delete Zeitstempel |
@HasMany() | Eins-zu-Viele Beziehung |
@BelongsTo() | Viele-zu-Eins Beziehung |
@ManyToMany() | Viele-zu-Viele mit Pivot-Tabelle |
Beziehungen¶
class User extends Table<User> {
@PrimaryKey()
declare id: string;
@HasMany(() => Post, 'user_id')
declare posts: HasMany<Post>;
}
class Post extends Table<Post> {
@PrimaryKey()
declare id: string;
declare user_id: string;
@BelongsTo(() => User, 'user_id')
declare user: BelongsTo<User>;
}
// Mit Beziehungen laden
const user = await User.first({ id: '123' }, { include: { posts: true } });
console.log(user.posts); // Post[]
Nächste Schritte¶
-
Installation
Dynamite in deinem Projekt einrichten
-
Erste Schritte
Erstelle dein erstes Modell Schritt für Schritt
-
API Referenz
Vollständige Dokumentation aller Klassen
-
Beispiele
Praktische Beispiele zum Verwenden
Entwickelt von Arcaelas Insiders