Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/backend/src/services/rules.services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,9 @@ export default class RulesService {
where: {
organizationId: organization.organizationId,
deletedBy: null
},
include: {
revisionFiles: true
}
});
return rulesets.map(rulesetTypeTransformer);
Expand Down
25 changes: 24 additions & 1 deletion src/frontend/src/apis/rules.api.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { RulesetType } from 'shared';
import { RulesetType, Ruleset } from 'shared';
import axios from '../utils/axios';
import { apiUrls } from '../utils/urls';

Expand All @@ -11,3 +11,26 @@ import { apiUrls } from '../utils/urls';
export const createRulesetType = (payload: { name: string }) => {
return axios.post<RulesetType>(apiUrls.rulesetTypeCreate(), payload);
};

/**
* Fetches all Ruleset Types for the current organization.
*
* @returns A list of Ruleset Types.
*/
export const getAllRulesetTypes = () => {
return axios.get<RulesetType[]>(apiUrls.rulesetTypes(), {
transformResponse: (data) => JSON.parse(data)
});
};

/**
* Fetches all Rulesets for a specific Ruleset Type.
*
* @param rulesetTypeId ID of the ruleset type.
* @returns A list of Rulesets for that ruleset type.
*/
export const getRulesetsByRulesetType = (rulesetTypeId: string) => {
return axios.get<Ruleset[]>(apiUrls.rulesetsByType(rulesetTypeId), {
transformResponse: (data) => JSON.parse(data)
});
};
31 changes: 28 additions & 3 deletions src/frontend/src/hooks/rules.hooks.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useMutation, useQueryClient } from 'react-query';
import { RulesetType } from 'shared';
import { createRulesetType } from '../apis/rules.api';
import { useMutation, useQueryClient, useQuery } from 'react-query';
import { Ruleset, RulesetType } from 'shared';
import { createRulesetType, getAllRulesetTypes, getRulesetsByRulesetType } from '../apis/rules.api';

interface CreateRulesetTypePayload {
name: string;
Expand All @@ -24,3 +24,28 @@ export const useCreateRulesetType = () => {
}
);
};

/**
* React Query hook to fetch all Ruleset Types.
*
* @returns Query result containing Ruleset Types data, loading state, and error state.
*/
export const useAllRulesetTypes = () => {
return useQuery<RulesetType[], Error>(['rulesetTypes'], async () => {
const { data } = await getAllRulesetTypes();
return data;
});
};

/**
* React Query hook to fetch all Rulesets for a specific Ruleset Type.
*
* @param rulesetTypeId The ID of the ruleset type.
* @returns Query result containing Rulesets data, loading state, and error state.
*/
export const useRulesetsByType = (rulesetTypeId: string) => {
return useQuery<Ruleset[], Error>(['rulesets', rulesetTypeId], async () => {
const { data } = await getRulesetsByRulesetType(rulesetTypeId);
return data;
});
};
Loading