Skip to content

Commit

Permalink
feat: fe lib ci
Browse files Browse the repository at this point in the history
  • Loading branch information
garrettladley committed Apr 26, 2024
1 parent 0eb16da commit 0aa22ae
Show file tree
Hide file tree
Showing 23 changed files with 281 additions and 161 deletions.
76 changes: 76 additions & 0 deletions .github/workflows/frontend_lib.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Frontend Lib

permissions: read-all

on:
push:
paths:
- frontend/lib/**
- .github/workflows/frontend_lib.yml
pull_request:
types: opened
paths:
- frontend/lib/**
- .github/workflows/frontend_lib.yml

jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: yarn
cache-dependency-path: frontend/lib/yarn.lock
- name: Install dependencies
run: |
cd frontend/lib
yarn install
- name: Format
run: |
cd frontend/lib
yarn format
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: yarn
cache-dependency-path: frontend/lib/yarn.lock
- name: Install dependencies
run: |
cd frontend/lib
yarn install
- name: Lint
run: |
cd frontend/lib
yarn lint
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: yarn
cache-dependency-path: frontend/lib/yarn.lock
- name: Install dependencies
run: |
cd frontend/lib
yarn install
- name: Test
run: |
cd frontend/lib
yarn test
41 changes: 41 additions & 0 deletions .github/workflows/frontend_lib_codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Frontend Lib CodeQL

on:
push:
paths:
- "frontend/lib/**"
- ".github/workflows/frontend_lib_codeql.yml"
pull_request:
types: [opened]
paths:
- "frontend/lib/**"
- ".github/workflows/frontend_lib_codeql.yml"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
security-events: write
strategy:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: javascript-typescript
queries: security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v3
with:
working-directory: frontend/lib
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: lib
1 change: 0 additions & 1 deletion frontend/dashboard/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
{
"extends": "next/core-web-vitals",
"plugins": ["prettier"]
}
4 changes: 4 additions & 0 deletions frontend/lib/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "next/core-web-vitals",
"plugins": ["prettier"]
}
15 changes: 6 additions & 9 deletions frontend/lib/api/category.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { z } from 'zod';
import { z } from "zod";

import { API_BASE_URL } from '@/const';
import { Category, categorySchema } from '@/types/category';
import { uuid } from '@/types/uuid';
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { API_BASE_URL } from "@/const";
import { Category, categorySchema } from "@/types/category";
import { uuid } from "@/types/uuid";
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const categoriesApi = createApi({
reducerPath: "categoriesApi",
Expand All @@ -28,7 +28,4 @@ export const categoriesApi = createApi({
}),
});

export const {
useCategoriesQuery,
useCategoryQuery,
} = categoriesApi;
export const { useCategoriesQuery, useCategoryQuery } = categoriesApi;
17 changes: 8 additions & 9 deletions frontend/lib/api/club.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { API_BASE_URL } from '@/const';
import { Club } from '@/types/club';
import { Contact } from '@/types/contact';
import { Tag } from '@/types/tag';
import { uuid } from '@/types/uuid';
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { API_BASE_URL } from "@/const";
import { Club } from "@/types/club";
import { Contact } from "@/types/contact";
import { Tag } from "@/types/tag";
import { uuid } from "@/types/uuid";
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const clubsApi = createApi({
reducerPath: "clubsApi",
Expand Down Expand Up @@ -41,13 +41,12 @@ export const clubsApi = createApi({
providesTags: (result, _, clubID) =>
result ? [{ type: "Clubs", id: clubID }] : [],
}),

}),
});

export const {
useClubsQuery,
useClubQuery,
useClubContactsQuery,
useClubTagsQuery
} = clubsApi;
useClubTagsQuery,
} = clubsApi;
10 changes: 5 additions & 5 deletions frontend/lib/api/contact.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { z } from 'zod';
import { z } from "zod";

import { API_BASE_URL } from '@/const';
import { Contact, contactSchema } from '@/types/contact';
import { uuid } from '@/types/uuid';
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { API_BASE_URL } from "@/const";
import { Contact, contactSchema } from "@/types/contact";
import { uuid } from "@/types/uuid";
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const contactsApi = createApi({
reducerPath: "contactApi",
Expand Down
12 changes: 6 additions & 6 deletions frontend/lib/api/event.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { API_BASE_URL } from '@/const';
import { Club } from '@/types/club';
import { Event } from '@/types/event';
import { uuid } from '@/types/uuid';
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { API_BASE_URL } from "@/const";
import { Club } from "@/types/club";
import { Event } from "@/types/event";
import { uuid } from "@/types/uuid";
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const eventsApi = createApi({
reducerPath: "eventsApi",
Expand Down Expand Up @@ -48,4 +48,4 @@ export const {
useEventQuery,
useEventTagsQuery,
useEventHostsQuery,
} = eventsApi;
} = eventsApi;
12 changes: 6 additions & 6 deletions frontend/lib/api/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export * from './tag'
export * from './user'
export * from './event'
export * from './contact'
export * from './club'
export * from './category'
export * from "./tag";
export * from "./user";
export * from "./event";
export * from "./contact";
export * from "./club";
export * from "./category";
50 changes: 25 additions & 25 deletions frontend/lib/api/tag.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
import { z } from 'zod';
import { z } from "zod";

import { API_BASE_URL } from '@/const';
import { Tag, tagSchema } from '@/types/tag';
import { uuid } from '@/types/uuid';
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { API_BASE_URL } from "@/const";
import { Tag, tagSchema } from "@/types/tag";
import { uuid } from "@/types/uuid";
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const tagsApi = createApi({
reducerPath: "tagsApi",
baseQuery: fetchBaseQuery({ baseUrl: API_BASE_URL }),
tagTypes: ["Tags"],
endpoints: (builder) => ({
tags: builder.query<Tag[], void>({
query: () => "tags",
transformResponse: (rawResponse: unknown) => {
return z.array(tagSchema).parse(rawResponse);
},
providesTags: [{ type: "Tags", id: "LIST" }],
}),
tag: builder.query<Tag, uuid>({
query: (tagID: uuid) => `tags/${tagID}`,
transformResponse: (rawResponse: unknown) => {
return tagSchema.parse(rawResponse);
},
providesTags: (result, _, tagID) =>
result ? [{ type: "Tags", id: tagID }] : [],
}),
reducerPath: "tagsApi",
baseQuery: fetchBaseQuery({ baseUrl: API_BASE_URL }),
tagTypes: ["Tags"],
endpoints: (builder) => ({
tags: builder.query<Tag[], void>({
query: () => "tags",
transformResponse: (rawResponse: unknown) => {
return z.array(tagSchema).parse(rawResponse);
},
providesTags: [{ type: "Tags", id: "LIST" }],
}),
tag: builder.query<Tag, uuid>({
query: (tagID: uuid) => `tags/${tagID}`,
transformResponse: (rawResponse: unknown) => {
return tagSchema.parse(rawResponse);
},
providesTags: (result, _, tagID) =>
result ? [{ type: "Tags", id: tagID }] : [],
}),
}),
});

export const { useTagsQuery, useTagQuery } = tagsApi;
export const { useTagsQuery, useTagQuery } = tagsApi;
42 changes: 24 additions & 18 deletions frontend/lib/api/user.ts
Original file line number Diff line number Diff line change
@@ -1,52 +1,58 @@
import { z } from 'zod';
import { z } from "zod";

import { API_BASE_URL } from '@/const';
import { Club, clubSchema } from '@/types/club';
import { User, userSchema } from '@/types/user';
import { uuid } from '@/types/uuid';
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { API_BASE_URL } from "@/const";
import { Club, clubSchema } from "@/types/club";
import { User, userSchema } from "@/types/user";
import { uuid } from "@/types/uuid";
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";

export const usersApi = createApi({
reducerPath: "usersApi",
baseQuery: fetchBaseQuery({ baseUrl: API_BASE_URL }),
tagTypes: ['Users'],
tagTypes: ["Users"],
endpoints: (builder) => ({
users: builder.query<User[], void>({
query: () => "users",
transformResponse: (rawResponse: unknown) => {
return z.array(userSchema).parse(rawResponse);
},
providesTags: [{ type: 'Users', id: 'LIST' }],
providesTags: [{ type: "Users", id: "LIST" }],
}),
user: builder.query<User, uuid>({
query: (userID: uuid) => `users/${userID}`,
transformResponse: (rawResponse: unknown) => {
return userSchema.parse(rawResponse);
},
providesTags: (result, _, userID) =>
result ? [{ type: 'Users', id: userID }] : [],
result ? [{ type: "Users", id: userID }] : [],
}),
userFollowing: builder.query<Club[], uuid>({
query: (userID: uuid) => `users/${userID}/follower`,
transformResponse: (rawResponse: unknown) => {
return z.array(clubSchema).parse(rawResponse);
},
providesTags: (result, _, userID) =>
result ? [{ type: 'Users', id: userID }] : [],
result ? [{ type: "Users", id: userID }] : [],
}),
createUserClubFollowing: builder.mutation<void, { userID: uuid; clubID: uuid }>({
createUserClubFollowing: builder.mutation<
void,
{ userID: uuid; clubID: uuid }
>({
query: ({ userID, clubID }) => ({
url: `users/${userID}/follower/${clubID}`,
method: 'POST',
method: "POST",
}),
invalidatesTags: ['Users'],
invalidatesTags: ["Users"],
}),
deleteUserClubFollowing: builder.mutation<void, { userID: uuid; clubID: uuid }>({
deleteUserClubFollowing: builder.mutation<
void,
{ userID: uuid; clubID: uuid }
>({
query: ({ userID, clubID }) => ({
url: `users/${userID}/follower/${clubID}`,
method: 'DELETE',
method: "DELETE",
}),
invalidatesTags: ['Users'],
invalidatesTags: ["Users"],
}),
}),
});
Expand All @@ -56,5 +62,5 @@ export const {
useUserQuery,
useUserFollowingQuery,
useCreateUserClubFollowingMutation,
useDeleteUserClubFollowingMutation
} = usersApi;
useDeleteUserClubFollowingMutation,
} = usersApi;
8 changes: 4 additions & 4 deletions frontend/lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export * from './api';
export * from './types';
export * from "./api";
export * from "./types";

export * from './store';
export * from './const'
export * from "./store";
export * from "./const";
Loading

0 comments on commit 0aa22ae

Please sign in to comment.