Persistensi FlowModel

FlowEngine menyediakan sistem persistensi yang lengkap

20251008231338

IFlowModelRepository

IFlowModelRepository adalah interface persistensi model FlowEngine, yang mendefinisikan operasi loading remote, save, dan delete dari model. Dengan mengimplementasikan interface ini, data model dapat di-persisten ke database backend, API, atau media penyimpanan lainnya, sehingga mewujudkan sinkronisasi data frontend dan backend.

Metode Utama

  • findOne(query: Query): Promise<FlowModel | null>
    Memuat data model dari remote berdasarkan identifier unik uid.

  • save(model: FlowModel): Promise<any>
    Menyimpan data model ke storage remote.

  • destroy(uid: string): Promise<boolean>
    Menghapus model dari storage remote berdasarkan uid.

Contoh FlowModelRepository

class FlowModelRepository implements IFlowModelRepository<FlowModel> {
  constructor(private app: Application) {}

  async findOne(query) {
    const { uid, parentId } = query;
    // Implementasi: mendapatkan model berdasarkan uid
    return null;
  }

  async save(model: FlowModel) {
    console.log('Saving model:', model);
    // Implementasi: menyimpan model
    return model;
  }

  async destroy(uid: string) {
    // Implementasi: menghapus model berdasarkan uid
    return true;
  }
}

Mengatur FlowModelRepository

flowEngine.setModelRepository(new FlowModelRepository(this.app));

Metode Manajemen Model yang Disediakan FlowEngine

Metode Lokal

await flowEngine.createModelAsync(options); // Membuat instance model lokal
flowEngine.getModel(uid);        // Mendapatkan instance model lokal
flowEngine.removeModel(uid);     // Menghapus instance model lokal

Metode Remote (Diimplementasikan oleh ModelRepository)

await flowEngine.loadModel(uid);     // Memuat model dari remote
await flowEngine.saveModel(model);   // Menyimpan model ke remote
await flowEngine.destroyModel(uid);  // Menghapus model dari remote

Metode Instance model

const model = await this.flowEngine.createModelAsync({
  use: 'FlowModel',
});
await model.save();     // Save ke remote
await model.destroy();  // Delete dari remote