Zum Inhalt

@arcaelas/dynamite

Banner

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

    Installieren

  • Erste Schritte


    Erstelle dein erstes Modell Schritt für Schritt

    Starten

  • API Referenz


    Vollständige Dokumentation aller Klassen

    Referenz

  • Beispiele


    Praktische Beispiele zum Verwenden

    Beispiele


Entwickelt von Arcaelas Insiders