Skip to content

Репозитории

  • Preferred location (for context): src/app/contexts/{ContextName}/infrastructure/http/repositories

С точки зрения реализации репозитории не имеют ограничений. Ниже приведён пример интеграции того, как пакет предполагает реализацию репозитория и интеграцию в него источника данных. Примеры источника данных и ответа для источника данных приведены в предыдущих разделах.

typescript
// В данном примере используется источник данных из примера в предыдущем разделе
// Импортируется из папки /core, о которой можно почитать в разделе об архитектуре
// Данный алиас и сам источник можно сгенерировать с помощью @azure-net/cli (о нём в разделе CLI)
import { MyCustomDatasource } from '$core';

export class MyRepository {
  constructor(private datasource: MyCustomDatasource) {}

  async collection(query?: MyQueryType) {
    return this.datasource.createRequest<IUser[]>(({ http, query }) => http.get(`/users${query.build(query)}`))
        // в then мы получаем экземпляр нашего ответа, созданного в предыдущих разделах
        .then((res) => res.paginate().get());
  }

  async create(data: MyCreateRequest) {
    return this.datasource.createRequest<IUser>(({ http }) => http.post('/users', { json: data }));
  }
}