init sources

This commit is contained in:
Jesper Møller Jensen
2023-05-03 22:10:17 +12:00
parent 61df6c596b
commit 036d0feedb
4 changed files with 78 additions and 2 deletions

View File

@@ -0,0 +1,50 @@
import { UmbUserGroupDetailDataSource } from '../../types';
import { DataSourceResponse } from '@umbraco-cms/backoffice/repository';
import {
CreateUserRequestModel,
UpdateUserRequestModel,
UserPresentationBaseModel,
UserResource,
InviteUserRequestModel,
EnableUserRequestModel,
DisableUserRequestModel,
UserGroupBaseModel,
UserGroupResource,
} from '@umbraco-cms/backoffice/backend-api';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
* A data source for the User that fetches data from the server
* @export
* @class UmbUserGroupServerDataSource
* @implements {RepositoryDetailDataSource}
*/
export class UmbUserGroupServerDataSource implements UmbUserGroupDetailDataSource {
#host: UmbControllerHostElement;
/**
* Creates an instance of UmbUserGroupServerDataSource.
* @param {UmbControllerHostElement} host
* @memberof UmbUserGroupServerDataSource
*/
constructor(host: UmbControllerHostElement) {
this.#host = host;
}
createScaffold(parentId: string | null): Promise<DataSourceResponse<UserGroupBaseModel>> {
throw new Error('Method not implemented.');
}
get(id: string): Promise<DataSourceResponse<UserGroupBaseModel>> {
if (!id) throw new Error('Id is missing');
return tryExecuteAndNotify(this.#host, UserGroupResource.getUserGroupById({ id }));
}
insert(data: UserGroupBaseModel): Promise<DataSourceResponse<void>> {
throw new Error('Method not implemented.');
}
update(unique: string, data: UserGroupBaseModel): Promise<DataSourceResponse<UserGroupBaseModel>> {
throw new Error('Method not implemented.');
}
delete(unique: string): Promise<DataSourceResponse<undefined>> {
throw new Error('Method not implemented.');
}
}

View File

@@ -1,4 +1,6 @@
import { Observable } from 'rxjs';
import { UmbUserGroupDetailDataSource } from '../types';
import { UmbUserGroupServerDataSource } from './sources/user-group.server.data';
import { UserGroupBaseModel } from '@umbraco-cms/backoffice/backend-api';
import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller';
import {
@@ -12,16 +14,27 @@ import {
export class UmbUserGroupRepository implements UmbDetailRepository<UserGroupBaseModel>, UmbCollectionRepository {
#host: UmbControllerHostElement;
#detailSource: UmbUserGroupDetailDataSource;
constructor(host: UmbControllerHostElement) {
this.#host = host;
this.#detailSource = new UmbUserGroupServerDataSource(this.#host);
}
createScaffold(parentId: string | null): Promise<UmbRepositoryResponse<any>> {
throw new Error('Method not implemented.');
}
requestById(id: string): Promise<UmbRepositoryResponse<any>> {
throw new Error('Method not implemented.');
async requestById(id: string) {
if (!id) throw new Error('Id is missing');
const { data, error } = await this.#detailSource.get(id);
//TODO Put it in the store
return { data, error };
}
byId(id: string): Promise<Observable<any>> {
throw new Error('Method not implemented.');
}

View File

@@ -1,4 +1,10 @@
import {
SaveUserGroupRequestModel,
UpdateUserGroupRequestModel,
UserGroupBaseModel,
} from '@umbraco-cms/backoffice/backend-api';
import type { UmbEntityBase } from '@umbraco-cms/backoffice/models';
import { UmbDataSource } from '@umbraco-cms/backoffice/repository';
export interface UserGroupEntity extends UmbEntityBase {
type: 'user-group';
@@ -11,3 +17,10 @@ export interface UserGroupDetails extends UserGroupEntity {
mediaStartNode?: string;
permissions: Array<string>;
}
export type UmbUserGroupDetailDataSource = UmbDataSource<
SaveUserGroupRequestModel,
void,
UpdateUserGroupRequestModel,
UserGroupBaseModel
>;