From 4ab1db0c0e98611883af992788ef5e02df833be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Salazar?= <73718835+joshrs23@users.noreply.github.com> Date: Tue, 18 Nov 2025 13:20:10 -0500 Subject: [PATCH] sdk from back and first configuration for firebase --- .../dataconnect-generated/.guides/usage.md | 51 +- .../src/dataconnect-generated/README.md | 996 +++--------------- .../dataconnect-generated/esm/index.esm.js | 117 +- .../src/dataconnect-generated/index.cjs.js | 130 +-- .../src/dataconnect-generated/index.d.ts | 272 +---- .../src/dataconnect-generated/package.json | 2 +- .../src/dataconnect-generated/react/README.md | 780 ++------------ .../react/esm/index.esm.js | 58 +- .../dataconnect-generated/react/index.cjs.js | 58 +- .../dataconnect-generated/react/index.d.ts | 31 +- .../dataconnect-generated/react/package.json | 2 +- frontend-web/src/lib/firebaseConfig.js | 22 + 12 files changed, 363 insertions(+), 2156 deletions(-) create mode 100644 frontend-web/src/lib/firebaseConfig.js diff --git a/frontend-web/src/dataconnect-generated/.guides/usage.md b/frontend-web/src/dataconnect-generated/.guides/usage.md index c9fc0fe0..ded8abc8 100644 --- a/frontend-web/src/dataconnect-generated/.guides/usage.md +++ b/frontend-web/src/dataconnect-generated/.guides/usage.md @@ -12,26 +12,12 @@ For each operation, there is a wrapper hook that can be used to call the operati Here are all of the hooks that get generated: ```ts -import { useCreateMovie, useUpsertUser, useAddReview, useDeleteReview, useListMovies, useListUsers, useListUserReviews, useGetMovieById, useSearchMovie } from '@dataconnect/generated/react'; +import { useCreateEvent, useListEvents } from '@dataconnect/generated/react'; // The types of these hooks are available in react/index.d.ts -const { data, isPending, isSuccess, isError, error } = useCreateMovie(createMovieVars); +const { data, isPending, isSuccess, isError, error } = useCreateEvent(createEventVars); -const { data, isPending, isSuccess, isError, error } = useUpsertUser(upsertUserVars); - -const { data, isPending, isSuccess, isError, error } = useAddReview(addReviewVars); - -const { data, isPending, isSuccess, isError, error } = useDeleteReview(deleteReviewVars); - -const { data, isPending, isSuccess, isError, error } = useListMovies(); - -const { data, isPending, isSuccess, isError, error } = useListUsers(); - -const { data, isPending, isSuccess, isError, error } = useListUserReviews(); - -const { data, isPending, isSuccess, isError, error } = useGetMovieById(getMovieByIdVars); - -const { data, isPending, isSuccess, isError, error } = useSearchMovie(searchMovieVars); +const { data, isPending, isSuccess, isError, error } = useListEvents(); ``` @@ -70,35 +56,14 @@ If a user is not using a supported framework, they can use the generated SDK dir Here's an example of how to use it with the first 5 operations: ```js -import { createMovie, upsertUser, addReview, deleteReview, listMovies, listUsers, listUserReviews, getMovieById, searchMovie } from '@dataconnect/generated'; +import { createEvent, listEvents } from '@dataconnect/generated'; -// Operation CreateMovie: For variables, look at type CreateMovieVars in ../index.d.ts -const { data } = await CreateMovie(dataConnect, createMovieVars); +// Operation CreateEvent: For variables, look at type CreateEventVars in ../index.d.ts +const { data } = await CreateEvent(dataConnect, createEventVars); -// Operation UpsertUser: For variables, look at type UpsertUserVars in ../index.d.ts -const { data } = await UpsertUser(dataConnect, upsertUserVars); - -// Operation AddReview: For variables, look at type AddReviewVars in ../index.d.ts -const { data } = await AddReview(dataConnect, addReviewVars); - -// Operation DeleteReview: For variables, look at type DeleteReviewVars in ../index.d.ts -const { data } = await DeleteReview(dataConnect, deleteReviewVars); - -// Operation ListMovies: -const { data } = await ListMovies(dataConnect); - -// Operation ListUsers: -const { data } = await ListUsers(dataConnect); - -// Operation ListUserReviews: -const { data } = await ListUserReviews(dataConnect); - -// Operation GetMovieById: For variables, look at type GetMovieByIdVars in ../index.d.ts -const { data } = await GetMovieById(dataConnect, getMovieByIdVars); - -// Operation SearchMovie: For variables, look at type SearchMovieVars in ../index.d.ts -const { data } = await SearchMovie(dataConnect, searchMovieVars); +// Operation listEvents: +const { data } = await ListEvents(dataConnect); ``` \ No newline at end of file diff --git a/frontend-web/src/dataconnect-generated/README.md b/frontend-web/src/dataconnect-generated/README.md index 5f28bb82..a201a0f7 100644 --- a/frontend-web/src/dataconnect-generated/README.md +++ b/frontend-web/src/dataconnect-generated/README.md @@ -1,5 +1,5 @@ # Generated TypeScript README -This README will guide you through the process of using the generated JavaScript SDK package for the connector `example`. It will also provide examples on how to use your generated SDK to call your Data Connect queries and mutations. +This README will guide you through the process of using the generated JavaScript SDK package for the connector `krow-connector`. It will also provide examples on how to use your generated SDK to call your Data Connect queries and mutations. **If you're looking for the `React README`, you can find it at [`dataconnect-generated/react/README.md`](./react/README.md)** @@ -10,19 +10,12 @@ This README will guide you through the process of using the generated JavaScript - [**Accessing the connector**](#accessing-the-connector) - [*Connecting to the local Emulator*](#connecting-to-the-local-emulator) - [**Queries**](#queries) - - [*ListMovies*](#listmovies) - - [*ListUsers*](#listusers) - - [*ListUserReviews*](#listuserreviews) - - [*GetMovieById*](#getmoviebyid) - - [*SearchMovie*](#searchmovie) + - [*listEvents*](#listevents) - [**Mutations**](#mutations) - - [*CreateMovie*](#createmovie) - - [*UpsertUser*](#upsertuser) - - [*AddReview*](#addreview) - - [*DeleteReview*](#deletereview) + - [*CreateEvent*](#createevent) # Accessing the connector -A connector is a collection of Queries and Mutations. One SDK is generated for each connector - this SDK is generated for the connector `example`. You can find more information about connectors in the [Data Connect documentation](https://firebase.google.com/docs/data-connect#how-does). +A connector is a collection of Queries and Mutations. One SDK is generated for each connector - this SDK is generated for the connector `krow-connector`. You can find more information about connectors in the [Data Connect documentation](https://firebase.google.com/docs/data-connect#how-does). You can use this generated SDK by importing from the package `@dataconnect/generated` as shown below. Both CommonJS and ESM imports are supported. @@ -64,547 +57,107 @@ The following is true for both the action shortcut function and the `QueryRef` f - If the Query accepts arguments, both the action shortcut function and the `QueryRef` function accept a single argument: an object that contains all the required variables (and the optional variables) for the Query - Both functions can be called with or without passing in a `DataConnect` instance as an argument. If no `DataConnect` argument is passed in, then the generated SDK will call `getDataConnect(connectorConfig)` behind the scenes for you. -Below are examples of how to use the `example` connector's generated functions to execute each query. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#using-queries). +Below are examples of how to use the `krow-connector` connector's generated functions to execute each query. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#using-queries). -## ListMovies -You can execute the `ListMovies` query using the following action shortcut function, or by calling `executeQuery()` after calling the following `QueryRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): +## listEvents +You can execute the `listEvents` query using the following action shortcut function, or by calling `executeQuery()` after calling the following `QueryRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): ```typescript -listMovies(): QueryPromise; +listEvents(): QueryPromise; -interface ListMoviesRef { +interface ListEventsRef { ... /* Allow users to create refs without passing in DataConnect */ - (): QueryRef; + (): QueryRef; } -export const listMoviesRef: ListMoviesRef; +export const listEventsRef: ListEventsRef; ``` You can also pass in a `DataConnect` instance to the action shortcut function or `QueryRef` function. ```typescript -listMovies(dc: DataConnect): QueryPromise; +listEvents(dc: DataConnect): QueryPromise; -interface ListMoviesRef { +interface ListEventsRef { ... - (dc: DataConnect): QueryRef; + (dc: DataConnect): QueryRef; } -export const listMoviesRef: ListMoviesRef; +export const listEventsRef: ListEventsRef; ``` -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the listMoviesRef: +If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the listEventsRef: ```typescript -const name = listMoviesRef.operationName; +const name = listEventsRef.operationName; console.log(name); ``` ### Variables -The `ListMovies` query has no variables. +The `listEvents` query has no variables. ### Return Type -Recall that executing the `ListMovies` query returns a `QueryPromise` that resolves to an object with a `data` property. +Recall that executing the `listEvents` query returns a `QueryPromise` that resolves to an object with a `data` property. -The `data` property is an object of type `ListMoviesData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: +The `data` property is an object of type `ListEventsData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: ```typescript -export interface ListMoviesData { - movies: ({ +export interface ListEventsData { + events: ({ id: UUIDString; - title: string; - imageUrl: string; - genre?: string | null; - } & Movie_Key)[]; + eventName: string; + status: EventStatus; + date: TimestampString; + isRecurring: boolean; + recurrenceType?: RecurrenceType | null; + businessId: UUIDString; + vendorId?: UUIDString | null; + total?: number | null; + requested?: number | null; + } & Event_Key)[]; } ``` -### Using `ListMovies`'s action shortcut function +### Using `listEvents`'s action shortcut function ```typescript import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, listMovies } from '@dataconnect/generated'; +import { connectorConfig, listEvents } from '@dataconnect/generated'; -// Call the `listMovies()` function to execute the query. +// Call the `listEvents()` function to execute the query. // You can use the `await` keyword to wait for the promise to resolve. -const { data } = await listMovies(); +const { data } = await listEvents(); // You can also pass in a `DataConnect` instance to the action shortcut function. const dataConnect = getDataConnect(connectorConfig); -const { data } = await listMovies(dataConnect); +const { data } = await listEvents(dataConnect); -console.log(data.movies); +console.log(data.events); // Or, you can use the `Promise` API. -listMovies().then((response) => { +listEvents().then((response) => { const data = response.data; - console.log(data.movies); + console.log(data.events); }); ``` -### Using `ListMovies`'s `QueryRef` function +### Using `listEvents`'s `QueryRef` function ```typescript import { getDataConnect, executeQuery } from 'firebase/data-connect'; -import { connectorConfig, listMoviesRef } from '@dataconnect/generated'; +import { connectorConfig, listEventsRef } from '@dataconnect/generated'; -// Call the `listMoviesRef()` function to get a reference to the query. -const ref = listMoviesRef(); +// Call the `listEventsRef()` function to get a reference to the query. +const ref = listEventsRef(); // You can also pass in a `DataConnect` instance to the `QueryRef` function. const dataConnect = getDataConnect(connectorConfig); -const ref = listMoviesRef(dataConnect); +const ref = listEventsRef(dataConnect); // Call `executeQuery()` on the reference to execute the query. // You can use the `await` keyword to wait for the promise to resolve. const { data } = await executeQuery(ref); -console.log(data.movies); +console.log(data.events); // Or, you can use the `Promise` API. executeQuery(ref).then((response) => { const data = response.data; - console.log(data.movies); -}); -``` - -## ListUsers -You can execute the `ListUsers` query using the following action shortcut function, or by calling `executeQuery()` after calling the following `QueryRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): -```typescript -listUsers(): QueryPromise; - -interface ListUsersRef { - ... - /* Allow users to create refs without passing in DataConnect */ - (): QueryRef; -} -export const listUsersRef: ListUsersRef; -``` -You can also pass in a `DataConnect` instance to the action shortcut function or `QueryRef` function. -```typescript -listUsers(dc: DataConnect): QueryPromise; - -interface ListUsersRef { - ... - (dc: DataConnect): QueryRef; -} -export const listUsersRef: ListUsersRef; -``` - -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the listUsersRef: -```typescript -const name = listUsersRef.operationName; -console.log(name); -``` - -### Variables -The `ListUsers` query has no variables. -### Return Type -Recall that executing the `ListUsers` query returns a `QueryPromise` that resolves to an object with a `data` property. - -The `data` property is an object of type `ListUsersData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: -```typescript -export interface ListUsersData { - users: ({ - id: string; - username: string; - } & User_Key)[]; -} -``` -### Using `ListUsers`'s action shortcut function - -```typescript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, listUsers } from '@dataconnect/generated'; - - -// Call the `listUsers()` function to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await listUsers(); - -// You can also pass in a `DataConnect` instance to the action shortcut function. -const dataConnect = getDataConnect(connectorConfig); -const { data } = await listUsers(dataConnect); - -console.log(data.users); - -// Or, you can use the `Promise` API. -listUsers().then((response) => { - const data = response.data; - console.log(data.users); -}); -``` - -### Using `ListUsers`'s `QueryRef` function - -```typescript -import { getDataConnect, executeQuery } from 'firebase/data-connect'; -import { connectorConfig, listUsersRef } from '@dataconnect/generated'; - - -// Call the `listUsersRef()` function to get a reference to the query. -const ref = listUsersRef(); - -// You can also pass in a `DataConnect` instance to the `QueryRef` function. -const dataConnect = getDataConnect(connectorConfig); -const ref = listUsersRef(dataConnect); - -// Call `executeQuery()` on the reference to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await executeQuery(ref); - -console.log(data.users); - -// Or, you can use the `Promise` API. -executeQuery(ref).then((response) => { - const data = response.data; - console.log(data.users); -}); -``` - -## ListUserReviews -You can execute the `ListUserReviews` query using the following action shortcut function, or by calling `executeQuery()` after calling the following `QueryRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): -```typescript -listUserReviews(): QueryPromise; - -interface ListUserReviewsRef { - ... - /* Allow users to create refs without passing in DataConnect */ - (): QueryRef; -} -export const listUserReviewsRef: ListUserReviewsRef; -``` -You can also pass in a `DataConnect` instance to the action shortcut function or `QueryRef` function. -```typescript -listUserReviews(dc: DataConnect): QueryPromise; - -interface ListUserReviewsRef { - ... - (dc: DataConnect): QueryRef; -} -export const listUserReviewsRef: ListUserReviewsRef; -``` - -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the listUserReviewsRef: -```typescript -const name = listUserReviewsRef.operationName; -console.log(name); -``` - -### Variables -The `ListUserReviews` query has no variables. -### Return Type -Recall that executing the `ListUserReviews` query returns a `QueryPromise` that resolves to an object with a `data` property. - -The `data` property is an object of type `ListUserReviewsData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: -```typescript -export interface ListUserReviewsData { - user?: { - id: string; - username: string; - reviews: ({ - rating?: number | null; - reviewDate: DateString; - reviewText?: string | null; - movie: { - id: UUIDString; - title: string; - } & Movie_Key; - })[]; - } & User_Key; -} -``` -### Using `ListUserReviews`'s action shortcut function - -```typescript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, listUserReviews } from '@dataconnect/generated'; - - -// Call the `listUserReviews()` function to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await listUserReviews(); - -// You can also pass in a `DataConnect` instance to the action shortcut function. -const dataConnect = getDataConnect(connectorConfig); -const { data } = await listUserReviews(dataConnect); - -console.log(data.user); - -// Or, you can use the `Promise` API. -listUserReviews().then((response) => { - const data = response.data; - console.log(data.user); -}); -``` - -### Using `ListUserReviews`'s `QueryRef` function - -```typescript -import { getDataConnect, executeQuery } from 'firebase/data-connect'; -import { connectorConfig, listUserReviewsRef } from '@dataconnect/generated'; - - -// Call the `listUserReviewsRef()` function to get a reference to the query. -const ref = listUserReviewsRef(); - -// You can also pass in a `DataConnect` instance to the `QueryRef` function. -const dataConnect = getDataConnect(connectorConfig); -const ref = listUserReviewsRef(dataConnect); - -// Call `executeQuery()` on the reference to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await executeQuery(ref); - -console.log(data.user); - -// Or, you can use the `Promise` API. -executeQuery(ref).then((response) => { - const data = response.data; - console.log(data.user); -}); -``` - -## GetMovieById -You can execute the `GetMovieById` query using the following action shortcut function, or by calling `executeQuery()` after calling the following `QueryRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): -```typescript -getMovieById(vars: GetMovieByIdVariables): QueryPromise; - -interface GetMovieByIdRef { - ... - /* Allow users to create refs without passing in DataConnect */ - (vars: GetMovieByIdVariables): QueryRef; -} -export const getMovieByIdRef: GetMovieByIdRef; -``` -You can also pass in a `DataConnect` instance to the action shortcut function or `QueryRef` function. -```typescript -getMovieById(dc: DataConnect, vars: GetMovieByIdVariables): QueryPromise; - -interface GetMovieByIdRef { - ... - (dc: DataConnect, vars: GetMovieByIdVariables): QueryRef; -} -export const getMovieByIdRef: GetMovieByIdRef; -``` - -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the getMovieByIdRef: -```typescript -const name = getMovieByIdRef.operationName; -console.log(name); -``` - -### Variables -The `GetMovieById` query requires an argument of type `GetMovieByIdVariables`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: - -```typescript -export interface GetMovieByIdVariables { - id: UUIDString; -} -``` -### Return Type -Recall that executing the `GetMovieById` query returns a `QueryPromise` that resolves to an object with a `data` property. - -The `data` property is an object of type `GetMovieByIdData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: -```typescript -export interface GetMovieByIdData { - movie?: { - id: UUIDString; - title: string; - imageUrl: string; - genre?: string | null; - metadata?: { - rating?: number | null; - releaseYear?: number | null; - description?: string | null; - }; - reviews: ({ - reviewText?: string | null; - reviewDate: DateString; - rating?: number | null; - user: { - id: string; - username: string; - } & User_Key; - })[]; - } & Movie_Key; -} -``` -### Using `GetMovieById`'s action shortcut function - -```typescript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, getMovieById, GetMovieByIdVariables } from '@dataconnect/generated'; - -// The `GetMovieById` query requires an argument of type `GetMovieByIdVariables`: -const getMovieByIdVars: GetMovieByIdVariables = { - id: ..., -}; - -// Call the `getMovieById()` function to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await getMovieById(getMovieByIdVars); -// Variables can be defined inline as well. -const { data } = await getMovieById({ id: ..., }); - -// You can also pass in a `DataConnect` instance to the action shortcut function. -const dataConnect = getDataConnect(connectorConfig); -const { data } = await getMovieById(dataConnect, getMovieByIdVars); - -console.log(data.movie); - -// Or, you can use the `Promise` API. -getMovieById(getMovieByIdVars).then((response) => { - const data = response.data; - console.log(data.movie); -}); -``` - -### Using `GetMovieById`'s `QueryRef` function - -```typescript -import { getDataConnect, executeQuery } from 'firebase/data-connect'; -import { connectorConfig, getMovieByIdRef, GetMovieByIdVariables } from '@dataconnect/generated'; - -// The `GetMovieById` query requires an argument of type `GetMovieByIdVariables`: -const getMovieByIdVars: GetMovieByIdVariables = { - id: ..., -}; - -// Call the `getMovieByIdRef()` function to get a reference to the query. -const ref = getMovieByIdRef(getMovieByIdVars); -// Variables can be defined inline as well. -const ref = getMovieByIdRef({ id: ..., }); - -// You can also pass in a `DataConnect` instance to the `QueryRef` function. -const dataConnect = getDataConnect(connectorConfig); -const ref = getMovieByIdRef(dataConnect, getMovieByIdVars); - -// Call `executeQuery()` on the reference to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await executeQuery(ref); - -console.log(data.movie); - -// Or, you can use the `Promise` API. -executeQuery(ref).then((response) => { - const data = response.data; - console.log(data.movie); -}); -``` - -## SearchMovie -You can execute the `SearchMovie` query using the following action shortcut function, or by calling `executeQuery()` after calling the following `QueryRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): -```typescript -searchMovie(vars?: SearchMovieVariables): QueryPromise; - -interface SearchMovieRef { - ... - /* Allow users to create refs without passing in DataConnect */ - (vars?: SearchMovieVariables): QueryRef; -} -export const searchMovieRef: SearchMovieRef; -``` -You can also pass in a `DataConnect` instance to the action shortcut function or `QueryRef` function. -```typescript -searchMovie(dc: DataConnect, vars?: SearchMovieVariables): QueryPromise; - -interface SearchMovieRef { - ... - (dc: DataConnect, vars?: SearchMovieVariables): QueryRef; -} -export const searchMovieRef: SearchMovieRef; -``` - -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the searchMovieRef: -```typescript -const name = searchMovieRef.operationName; -console.log(name); -``` - -### Variables -The `SearchMovie` query has an optional argument of type `SearchMovieVariables`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: - -```typescript -export interface SearchMovieVariables { - titleInput?: string | null; - genre?: string | null; -} -``` -### Return Type -Recall that executing the `SearchMovie` query returns a `QueryPromise` that resolves to an object with a `data` property. - -The `data` property is an object of type `SearchMovieData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: -```typescript -export interface SearchMovieData { - movies: ({ - id: UUIDString; - title: string; - genre?: string | null; - imageUrl: string; - } & Movie_Key)[]; -} -``` -### Using `SearchMovie`'s action shortcut function - -```typescript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, searchMovie, SearchMovieVariables } from '@dataconnect/generated'; - -// The `SearchMovie` query has an optional argument of type `SearchMovieVariables`: -const searchMovieVars: SearchMovieVariables = { - titleInput: ..., // optional - genre: ..., // optional -}; - -// Call the `searchMovie()` function to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await searchMovie(searchMovieVars); -// Variables can be defined inline as well. -const { data } = await searchMovie({ titleInput: ..., genre: ..., }); -// Since all variables are optional for this query, you can omit the `SearchMovieVariables` argument. -const { data } = await searchMovie(); - -// You can also pass in a `DataConnect` instance to the action shortcut function. -const dataConnect = getDataConnect(connectorConfig); -const { data } = await searchMovie(dataConnect, searchMovieVars); - -console.log(data.movies); - -// Or, you can use the `Promise` API. -searchMovie(searchMovieVars).then((response) => { - const data = response.data; - console.log(data.movies); -}); -``` - -### Using `SearchMovie`'s `QueryRef` function - -```typescript -import { getDataConnect, executeQuery } from 'firebase/data-connect'; -import { connectorConfig, searchMovieRef, SearchMovieVariables } from '@dataconnect/generated'; - -// The `SearchMovie` query has an optional argument of type `SearchMovieVariables`: -const searchMovieVars: SearchMovieVariables = { - titleInput: ..., // optional - genre: ..., // optional -}; - -// Call the `searchMovieRef()` function to get a reference to the query. -const ref = searchMovieRef(searchMovieVars); -// Variables can be defined inline as well. -const ref = searchMovieRef({ titleInput: ..., genre: ..., }); -// Since all variables are optional for this query, you can omit the `SearchMovieVariables` argument. -const ref = searchMovieRef(); - -// You can also pass in a `DataConnect` instance to the `QueryRef` function. -const dataConnect = getDataConnect(connectorConfig); -const ref = searchMovieRef(dataConnect, searchMovieVars); - -// Call `executeQuery()` on the reference to execute the query. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await executeQuery(ref); - -console.log(data.movies); - -// Or, you can use the `Promise` API. -executeQuery(ref).then((response) => { - const data = response.data; - console.log(data.movies); + console.log(data.events); }); ``` @@ -621,453 +174,144 @@ The following is true for both the action shortcut function and the `MutationRef - If the Mutation accepts arguments, both the action shortcut function and the `MutationRef` function accept a single argument: an object that contains all the required variables (and the optional variables) for the Mutation - Both functions can be called with or without passing in a `DataConnect` instance as an argument. If no `DataConnect` argument is passed in, then the generated SDK will call `getDataConnect(connectorConfig)` behind the scenes for you. -Below are examples of how to use the `example` connector's generated functions to execute each mutation. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#using-mutations). +Below are examples of how to use the `krow-connector` connector's generated functions to execute each mutation. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#using-mutations). -## CreateMovie -You can execute the `CreateMovie` mutation using the following action shortcut function, or by calling `executeMutation()` after calling the following `MutationRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): +## CreateEvent +You can execute the `CreateEvent` mutation using the following action shortcut function, or by calling `executeMutation()` after calling the following `MutationRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): ```typescript -createMovie(vars: CreateMovieVariables): MutationPromise; +createEvent(vars: CreateEventVariables): MutationPromise; -interface CreateMovieRef { +interface CreateEventRef { ... /* Allow users to create refs without passing in DataConnect */ - (vars: CreateMovieVariables): MutationRef; + (vars: CreateEventVariables): MutationRef; } -export const createMovieRef: CreateMovieRef; +export const createEventRef: CreateEventRef; ``` You can also pass in a `DataConnect` instance to the action shortcut function or `MutationRef` function. ```typescript -createMovie(dc: DataConnect, vars: CreateMovieVariables): MutationPromise; +createEvent(dc: DataConnect, vars: CreateEventVariables): MutationPromise; -interface CreateMovieRef { +interface CreateEventRef { ... - (dc: DataConnect, vars: CreateMovieVariables): MutationRef; + (dc: DataConnect, vars: CreateEventVariables): MutationRef; } -export const createMovieRef: CreateMovieRef; +export const createEventRef: CreateEventRef; ``` -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the createMovieRef: +If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the createEventRef: ```typescript -const name = createMovieRef.operationName; +const name = createEventRef.operationName; console.log(name); ``` ### Variables -The `CreateMovie` mutation requires an argument of type `CreateMovieVariables`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: +The `CreateEvent` mutation requires an argument of type `CreateEventVariables`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: ```typescript -export interface CreateMovieVariables { - title: string; - genre: string; - imageUrl: string; +export interface CreateEventVariables { + eventName: string; + isRecurring: boolean; + recurrenceType?: RecurrenceType | null; + businessId: UUIDString; + vendorId?: UUIDString | null; + status: EventStatus; + date: TimestampString; + shifts?: string | null; + total?: number | null; + requested?: number | null; + assignedStaff?: string | null; } ``` ### Return Type -Recall that executing the `CreateMovie` mutation returns a `MutationPromise` that resolves to an object with a `data` property. +Recall that executing the `CreateEvent` mutation returns a `MutationPromise` that resolves to an object with a `data` property. -The `data` property is an object of type `CreateMovieData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: +The `data` property is an object of type `CreateEventData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: ```typescript -export interface CreateMovieData { - movie_insert: Movie_Key; +export interface CreateEventData { + event_insert: Event_Key; } ``` -### Using `CreateMovie`'s action shortcut function +### Using `CreateEvent`'s action shortcut function ```typescript import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, createMovie, CreateMovieVariables } from '@dataconnect/generated'; +import { connectorConfig, createEvent, CreateEventVariables } from '@dataconnect/generated'; -// The `CreateMovie` mutation requires an argument of type `CreateMovieVariables`: -const createMovieVars: CreateMovieVariables = { - title: ..., - genre: ..., - imageUrl: ..., +// The `CreateEvent` mutation requires an argument of type `CreateEventVariables`: +const createEventVars: CreateEventVariables = { + eventName: ..., + isRecurring: ..., + recurrenceType: ..., // optional + businessId: ..., + vendorId: ..., // optional + status: ..., + date: ..., + shifts: ..., // optional + total: ..., // optional + requested: ..., // optional + assignedStaff: ..., // optional }; -// Call the `createMovie()` function to execute the mutation. +// Call the `createEvent()` function to execute the mutation. // You can use the `await` keyword to wait for the promise to resolve. -const { data } = await createMovie(createMovieVars); +const { data } = await createEvent(createEventVars); // Variables can be defined inline as well. -const { data } = await createMovie({ title: ..., genre: ..., imageUrl: ..., }); +const { data } = await createEvent({ eventName: ..., isRecurring: ..., recurrenceType: ..., businessId: ..., vendorId: ..., status: ..., date: ..., shifts: ..., total: ..., requested: ..., assignedStaff: ..., }); // You can also pass in a `DataConnect` instance to the action shortcut function. const dataConnect = getDataConnect(connectorConfig); -const { data } = await createMovie(dataConnect, createMovieVars); +const { data } = await createEvent(dataConnect, createEventVars); -console.log(data.movie_insert); +console.log(data.event_insert); // Or, you can use the `Promise` API. -createMovie(createMovieVars).then((response) => { +createEvent(createEventVars).then((response) => { const data = response.data; - console.log(data.movie_insert); + console.log(data.event_insert); }); ``` -### Using `CreateMovie`'s `MutationRef` function +### Using `CreateEvent`'s `MutationRef` function ```typescript import { getDataConnect, executeMutation } from 'firebase/data-connect'; -import { connectorConfig, createMovieRef, CreateMovieVariables } from '@dataconnect/generated'; +import { connectorConfig, createEventRef, CreateEventVariables } from '@dataconnect/generated'; -// The `CreateMovie` mutation requires an argument of type `CreateMovieVariables`: -const createMovieVars: CreateMovieVariables = { - title: ..., - genre: ..., - imageUrl: ..., +// The `CreateEvent` mutation requires an argument of type `CreateEventVariables`: +const createEventVars: CreateEventVariables = { + eventName: ..., + isRecurring: ..., + recurrenceType: ..., // optional + businessId: ..., + vendorId: ..., // optional + status: ..., + date: ..., + shifts: ..., // optional + total: ..., // optional + requested: ..., // optional + assignedStaff: ..., // optional }; -// Call the `createMovieRef()` function to get a reference to the mutation. -const ref = createMovieRef(createMovieVars); +// Call the `createEventRef()` function to get a reference to the mutation. +const ref = createEventRef(createEventVars); // Variables can be defined inline as well. -const ref = createMovieRef({ title: ..., genre: ..., imageUrl: ..., }); +const ref = createEventRef({ eventName: ..., isRecurring: ..., recurrenceType: ..., businessId: ..., vendorId: ..., status: ..., date: ..., shifts: ..., total: ..., requested: ..., assignedStaff: ..., }); // You can also pass in a `DataConnect` instance to the `MutationRef` function. const dataConnect = getDataConnect(connectorConfig); -const ref = createMovieRef(dataConnect, createMovieVars); +const ref = createEventRef(dataConnect, createEventVars); // Call `executeMutation()` on the reference to execute the mutation. // You can use the `await` keyword to wait for the promise to resolve. const { data } = await executeMutation(ref); -console.log(data.movie_insert); +console.log(data.event_insert); // Or, you can use the `Promise` API. executeMutation(ref).then((response) => { const data = response.data; - console.log(data.movie_insert); -}); -``` - -## UpsertUser -You can execute the `UpsertUser` mutation using the following action shortcut function, or by calling `executeMutation()` after calling the following `MutationRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): -```typescript -upsertUser(vars: UpsertUserVariables): MutationPromise; - -interface UpsertUserRef { - ... - /* Allow users to create refs without passing in DataConnect */ - (vars: UpsertUserVariables): MutationRef; -} -export const upsertUserRef: UpsertUserRef; -``` -You can also pass in a `DataConnect` instance to the action shortcut function or `MutationRef` function. -```typescript -upsertUser(dc: DataConnect, vars: UpsertUserVariables): MutationPromise; - -interface UpsertUserRef { - ... - (dc: DataConnect, vars: UpsertUserVariables): MutationRef; -} -export const upsertUserRef: UpsertUserRef; -``` - -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the upsertUserRef: -```typescript -const name = upsertUserRef.operationName; -console.log(name); -``` - -### Variables -The `UpsertUser` mutation requires an argument of type `UpsertUserVariables`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: - -```typescript -export interface UpsertUserVariables { - username: string; -} -``` -### Return Type -Recall that executing the `UpsertUser` mutation returns a `MutationPromise` that resolves to an object with a `data` property. - -The `data` property is an object of type `UpsertUserData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: -```typescript -export interface UpsertUserData { - user_upsert: User_Key; -} -``` -### Using `UpsertUser`'s action shortcut function - -```typescript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, upsertUser, UpsertUserVariables } from '@dataconnect/generated'; - -// The `UpsertUser` mutation requires an argument of type `UpsertUserVariables`: -const upsertUserVars: UpsertUserVariables = { - username: ..., -}; - -// Call the `upsertUser()` function to execute the mutation. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await upsertUser(upsertUserVars); -// Variables can be defined inline as well. -const { data } = await upsertUser({ username: ..., }); - -// You can also pass in a `DataConnect` instance to the action shortcut function. -const dataConnect = getDataConnect(connectorConfig); -const { data } = await upsertUser(dataConnect, upsertUserVars); - -console.log(data.user_upsert); - -// Or, you can use the `Promise` API. -upsertUser(upsertUserVars).then((response) => { - const data = response.data; - console.log(data.user_upsert); -}); -``` - -### Using `UpsertUser`'s `MutationRef` function - -```typescript -import { getDataConnect, executeMutation } from 'firebase/data-connect'; -import { connectorConfig, upsertUserRef, UpsertUserVariables } from '@dataconnect/generated'; - -// The `UpsertUser` mutation requires an argument of type `UpsertUserVariables`: -const upsertUserVars: UpsertUserVariables = { - username: ..., -}; - -// Call the `upsertUserRef()` function to get a reference to the mutation. -const ref = upsertUserRef(upsertUserVars); -// Variables can be defined inline as well. -const ref = upsertUserRef({ username: ..., }); - -// You can also pass in a `DataConnect` instance to the `MutationRef` function. -const dataConnect = getDataConnect(connectorConfig); -const ref = upsertUserRef(dataConnect, upsertUserVars); - -// Call `executeMutation()` on the reference to execute the mutation. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await executeMutation(ref); - -console.log(data.user_upsert); - -// Or, you can use the `Promise` API. -executeMutation(ref).then((response) => { - const data = response.data; - console.log(data.user_upsert); -}); -``` - -## AddReview -You can execute the `AddReview` mutation using the following action shortcut function, or by calling `executeMutation()` after calling the following `MutationRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): -```typescript -addReview(vars: AddReviewVariables): MutationPromise; - -interface AddReviewRef { - ... - /* Allow users to create refs without passing in DataConnect */ - (vars: AddReviewVariables): MutationRef; -} -export const addReviewRef: AddReviewRef; -``` -You can also pass in a `DataConnect` instance to the action shortcut function or `MutationRef` function. -```typescript -addReview(dc: DataConnect, vars: AddReviewVariables): MutationPromise; - -interface AddReviewRef { - ... - (dc: DataConnect, vars: AddReviewVariables): MutationRef; -} -export const addReviewRef: AddReviewRef; -``` - -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the addReviewRef: -```typescript -const name = addReviewRef.operationName; -console.log(name); -``` - -### Variables -The `AddReview` mutation requires an argument of type `AddReviewVariables`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: - -```typescript -export interface AddReviewVariables { - movieId: UUIDString; - rating: number; - reviewText: string; -} -``` -### Return Type -Recall that executing the `AddReview` mutation returns a `MutationPromise` that resolves to an object with a `data` property. - -The `data` property is an object of type `AddReviewData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: -```typescript -export interface AddReviewData { - review_upsert: Review_Key; -} -``` -### Using `AddReview`'s action shortcut function - -```typescript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, addReview, AddReviewVariables } from '@dataconnect/generated'; - -// The `AddReview` mutation requires an argument of type `AddReviewVariables`: -const addReviewVars: AddReviewVariables = { - movieId: ..., - rating: ..., - reviewText: ..., -}; - -// Call the `addReview()` function to execute the mutation. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await addReview(addReviewVars); -// Variables can be defined inline as well. -const { data } = await addReview({ movieId: ..., rating: ..., reviewText: ..., }); - -// You can also pass in a `DataConnect` instance to the action shortcut function. -const dataConnect = getDataConnect(connectorConfig); -const { data } = await addReview(dataConnect, addReviewVars); - -console.log(data.review_upsert); - -// Or, you can use the `Promise` API. -addReview(addReviewVars).then((response) => { - const data = response.data; - console.log(data.review_upsert); -}); -``` - -### Using `AddReview`'s `MutationRef` function - -```typescript -import { getDataConnect, executeMutation } from 'firebase/data-connect'; -import { connectorConfig, addReviewRef, AddReviewVariables } from '@dataconnect/generated'; - -// The `AddReview` mutation requires an argument of type `AddReviewVariables`: -const addReviewVars: AddReviewVariables = { - movieId: ..., - rating: ..., - reviewText: ..., -}; - -// Call the `addReviewRef()` function to get a reference to the mutation. -const ref = addReviewRef(addReviewVars); -// Variables can be defined inline as well. -const ref = addReviewRef({ movieId: ..., rating: ..., reviewText: ..., }); - -// You can also pass in a `DataConnect` instance to the `MutationRef` function. -const dataConnect = getDataConnect(connectorConfig); -const ref = addReviewRef(dataConnect, addReviewVars); - -// Call `executeMutation()` on the reference to execute the mutation. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await executeMutation(ref); - -console.log(data.review_upsert); - -// Or, you can use the `Promise` API. -executeMutation(ref).then((response) => { - const data = response.data; - console.log(data.review_upsert); -}); -``` - -## DeleteReview -You can execute the `DeleteReview` mutation using the following action shortcut function, or by calling `executeMutation()` after calling the following `MutationRef` function, both of which are defined in [dataconnect-generated/index.d.ts](./index.d.ts): -```typescript -deleteReview(vars: DeleteReviewVariables): MutationPromise; - -interface DeleteReviewRef { - ... - /* Allow users to create refs without passing in DataConnect */ - (vars: DeleteReviewVariables): MutationRef; -} -export const deleteReviewRef: DeleteReviewRef; -``` -You can also pass in a `DataConnect` instance to the action shortcut function or `MutationRef` function. -```typescript -deleteReview(dc: DataConnect, vars: DeleteReviewVariables): MutationPromise; - -interface DeleteReviewRef { - ... - (dc: DataConnect, vars: DeleteReviewVariables): MutationRef; -} -export const deleteReviewRef: DeleteReviewRef; -``` - -If you need the name of the operation without creating a ref, you can retrieve the operation name by calling the `operationName` property on the deleteReviewRef: -```typescript -const name = deleteReviewRef.operationName; -console.log(name); -``` - -### Variables -The `DeleteReview` mutation requires an argument of type `DeleteReviewVariables`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: - -```typescript -export interface DeleteReviewVariables { - movieId: UUIDString; -} -``` -### Return Type -Recall that executing the `DeleteReview` mutation returns a `MutationPromise` that resolves to an object with a `data` property. - -The `data` property is an object of type `DeleteReviewData`, which is defined in [dataconnect-generated/index.d.ts](./index.d.ts). It has the following fields: -```typescript -export interface DeleteReviewData { - review_delete?: Review_Key | null; -} -``` -### Using `DeleteReview`'s action shortcut function - -```typescript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, deleteReview, DeleteReviewVariables } from '@dataconnect/generated'; - -// The `DeleteReview` mutation requires an argument of type `DeleteReviewVariables`: -const deleteReviewVars: DeleteReviewVariables = { - movieId: ..., -}; - -// Call the `deleteReview()` function to execute the mutation. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await deleteReview(deleteReviewVars); -// Variables can be defined inline as well. -const { data } = await deleteReview({ movieId: ..., }); - -// You can also pass in a `DataConnect` instance to the action shortcut function. -const dataConnect = getDataConnect(connectorConfig); -const { data } = await deleteReview(dataConnect, deleteReviewVars); - -console.log(data.review_delete); - -// Or, you can use the `Promise` API. -deleteReview(deleteReviewVars).then((response) => { - const data = response.data; - console.log(data.review_delete); -}); -``` - -### Using `DeleteReview`'s `MutationRef` function - -```typescript -import { getDataConnect, executeMutation } from 'firebase/data-connect'; -import { connectorConfig, deleteReviewRef, DeleteReviewVariables } from '@dataconnect/generated'; - -// The `DeleteReview` mutation requires an argument of type `DeleteReviewVariables`: -const deleteReviewVars: DeleteReviewVariables = { - movieId: ..., -}; - -// Call the `deleteReviewRef()` function to get a reference to the mutation. -const ref = deleteReviewRef(deleteReviewVars); -// Variables can be defined inline as well. -const ref = deleteReviewRef({ movieId: ..., }); - -// You can also pass in a `DataConnect` instance to the `MutationRef` function. -const dataConnect = getDataConnect(connectorConfig); -const ref = deleteReviewRef(dataConnect, deleteReviewVars); - -// Call `executeMutation()` on the reference to execute the mutation. -// You can use the `await` keyword to wait for the promise to resolve. -const { data } = await executeMutation(ref); - -console.log(data.review_delete); - -// Or, you can use the `Promise` API. -executeMutation(ref).then((response) => { - const data = response.data; - console.log(data.review_delete); + console.log(data.event_insert); }); ``` diff --git a/frontend-web/src/dataconnect-generated/esm/index.esm.js b/frontend-web/src/dataconnect-generated/esm/index.esm.js index d4ff36cc..232d764e 100644 --- a/frontend-web/src/dataconnect-generated/esm/index.esm.js +++ b/frontend-web/src/dataconnect-generated/esm/index.esm.js @@ -1,107 +1,46 @@ import { queryRef, executeQuery, mutationRef, executeMutation, validateArgs } from 'firebase/data-connect'; +export const EventStatus = { + DRAFT: "DRAFT", + ACTIVE: "ACTIVE", + PENDING: "PENDING", + ASSIGNED: "ASSIGNED", + CONFIRMED: "CONFIRMED", + COMPLETED: "COMPLETED", + CANCELED: "CANCELED", +} + +export const RecurrenceType = { + SINGLE: "SINGLE", + DATE_RANGE: "DATE_RANGE", + SCATTER: "SCATTER", +} + export const connectorConfig = { - connector: 'example', - service: 'krow-workforce', + connector: 'krow-connector', + service: 'krow-workforce-db', location: 'us-central1' }; -export const createMovieRef = (dcOrVars, vars) => { +export const createEventRef = (dcOrVars, vars) => { const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'CreateMovie', inputVars); + return mutationRef(dcInstance, 'CreateEvent', inputVars); } -createMovieRef.operationName = 'CreateMovie'; +createEventRef.operationName = 'CreateEvent'; -export function createMovie(dcOrVars, vars) { - return executeMutation(createMovieRef(dcOrVars, vars)); +export function createEvent(dcOrVars, vars) { + return executeMutation(createEventRef(dcOrVars, vars)); } -export const upsertUserRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'UpsertUser', inputVars); -} -upsertUserRef.operationName = 'UpsertUser'; - -export function upsertUser(dcOrVars, vars) { - return executeMutation(upsertUserRef(dcOrVars, vars)); -} - -export const addReviewRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'AddReview', inputVars); -} -addReviewRef.operationName = 'AddReview'; - -export function addReview(dcOrVars, vars) { - return executeMutation(addReviewRef(dcOrVars, vars)); -} - -export const deleteReviewRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'DeleteReview', inputVars); -} -deleteReviewRef.operationName = 'DeleteReview'; - -export function deleteReview(dcOrVars, vars) { - return executeMutation(deleteReviewRef(dcOrVars, vars)); -} - -export const listMoviesRef = (dc) => { +export const listEventsRef = (dc) => { const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined); dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'ListMovies'); + return queryRef(dcInstance, 'listEvents'); } -listMoviesRef.operationName = 'ListMovies'; +listEventsRef.operationName = 'listEvents'; -export function listMovies(dc) { - return executeQuery(listMoviesRef(dc)); -} - -export const listUsersRef = (dc) => { - const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'ListUsers'); -} -listUsersRef.operationName = 'ListUsers'; - -export function listUsers(dc) { - return executeQuery(listUsersRef(dc)); -} - -export const listUserReviewsRef = (dc) => { - const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'ListUserReviews'); -} -listUserReviewsRef.operationName = 'ListUserReviews'; - -export function listUserReviews(dc) { - return executeQuery(listUserReviewsRef(dc)); -} - -export const getMovieByIdRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'GetMovieById', inputVars); -} -getMovieByIdRef.operationName = 'GetMovieById'; - -export function getMovieById(dcOrVars, vars) { - return executeQuery(getMovieByIdRef(dcOrVars, vars)); -} - -export const searchMovieRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'SearchMovie', inputVars); -} -searchMovieRef.operationName = 'SearchMovie'; - -export function searchMovie(dcOrVars, vars) { - return executeQuery(searchMovieRef(dcOrVars, vars)); +export function listEvents(dc) { + return executeQuery(listEventsRef(dc)); } diff --git a/frontend-web/src/dataconnect-generated/index.cjs.js b/frontend-web/src/dataconnect-generated/index.cjs.js index 54373654..4ee6e173 100644 --- a/frontend-web/src/dataconnect-generated/index.cjs.js +++ b/frontend-web/src/dataconnect-generated/index.cjs.js @@ -1,116 +1,50 @@ const { queryRef, executeQuery, mutationRef, executeMutation, validateArgs } = require('firebase/data-connect'); +const EventStatus = { + DRAFT: "DRAFT", + ACTIVE: "ACTIVE", + PENDING: "PENDING", + ASSIGNED: "ASSIGNED", + CONFIRMED: "CONFIRMED", + COMPLETED: "COMPLETED", + CANCELED: "CANCELED", +} +exports.EventStatus = EventStatus; + +const RecurrenceType = { + SINGLE: "SINGLE", + DATE_RANGE: "DATE_RANGE", + SCATTER: "SCATTER", +} +exports.RecurrenceType = RecurrenceType; + const connectorConfig = { - connector: 'example', - service: 'krow-workforce', + connector: 'krow-connector', + service: 'krow-workforce-db', location: 'us-central1' }; exports.connectorConfig = connectorConfig; -const createMovieRef = (dcOrVars, vars) => { +const createEventRef = (dcOrVars, vars) => { const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'CreateMovie', inputVars); + return mutationRef(dcInstance, 'CreateEvent', inputVars); } -createMovieRef.operationName = 'CreateMovie'; -exports.createMovieRef = createMovieRef; +createEventRef.operationName = 'CreateEvent'; +exports.createEventRef = createEventRef; -exports.createMovie = function createMovie(dcOrVars, vars) { - return executeMutation(createMovieRef(dcOrVars, vars)); +exports.createEvent = function createEvent(dcOrVars, vars) { + return executeMutation(createEventRef(dcOrVars, vars)); }; -const upsertUserRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'UpsertUser', inputVars); -} -upsertUserRef.operationName = 'UpsertUser'; -exports.upsertUserRef = upsertUserRef; - -exports.upsertUser = function upsertUser(dcOrVars, vars) { - return executeMutation(upsertUserRef(dcOrVars, vars)); -}; - -const addReviewRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'AddReview', inputVars); -} -addReviewRef.operationName = 'AddReview'; -exports.addReviewRef = addReviewRef; - -exports.addReview = function addReview(dcOrVars, vars) { - return executeMutation(addReviewRef(dcOrVars, vars)); -}; - -const deleteReviewRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return mutationRef(dcInstance, 'DeleteReview', inputVars); -} -deleteReviewRef.operationName = 'DeleteReview'; -exports.deleteReviewRef = deleteReviewRef; - -exports.deleteReview = function deleteReview(dcOrVars, vars) { - return executeMutation(deleteReviewRef(dcOrVars, vars)); -}; - -const listMoviesRef = (dc) => { +const listEventsRef = (dc) => { const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined); dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'ListMovies'); + return queryRef(dcInstance, 'listEvents'); } -listMoviesRef.operationName = 'ListMovies'; -exports.listMoviesRef = listMoviesRef; +listEventsRef.operationName = 'listEvents'; +exports.listEventsRef = listEventsRef; -exports.listMovies = function listMovies(dc) { - return executeQuery(listMoviesRef(dc)); -}; - -const listUsersRef = (dc) => { - const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'ListUsers'); -} -listUsersRef.operationName = 'ListUsers'; -exports.listUsersRef = listUsersRef; - -exports.listUsers = function listUsers(dc) { - return executeQuery(listUsersRef(dc)); -}; - -const listUserReviewsRef = (dc) => { - const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'ListUserReviews'); -} -listUserReviewsRef.operationName = 'ListUserReviews'; -exports.listUserReviewsRef = listUserReviewsRef; - -exports.listUserReviews = function listUserReviews(dc) { - return executeQuery(listUserReviewsRef(dc)); -}; - -const getMovieByIdRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'GetMovieById', inputVars); -} -getMovieByIdRef.operationName = 'GetMovieById'; -exports.getMovieByIdRef = getMovieByIdRef; - -exports.getMovieById = function getMovieById(dcOrVars, vars) { - return executeQuery(getMovieByIdRef(dcOrVars, vars)); -}; - -const searchMovieRef = (dcOrVars, vars) => { - const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars); - dcInstance._useGeneratedSdk(); - return queryRef(dcInstance, 'SearchMovie', inputVars); -} -searchMovieRef.operationName = 'SearchMovie'; -exports.searchMovieRef = searchMovieRef; - -exports.searchMovie = function searchMovie(dcOrVars, vars) { - return executeQuery(searchMovieRef(dcOrVars, vars)); +exports.listEvents = function listEvents(dc) { + return executeQuery(listEventsRef(dc)); }; diff --git a/frontend-web/src/dataconnect-generated/index.d.ts b/frontend-web/src/dataconnect-generated/index.d.ts index 4a2f9d35..856ff493 100644 --- a/frontend-web/src/dataconnect-generated/index.d.ts +++ b/frontend-web/src/dataconnect-generated/index.d.ts @@ -8,243 +8,83 @@ export type Int64String = string; export type DateString = string; +export enum EventStatus { + DRAFT = "DRAFT", + ACTIVE = "ACTIVE", + PENDING = "PENDING", + ASSIGNED = "ASSIGNED", + CONFIRMED = "CONFIRMED", + COMPLETED = "COMPLETED", + CANCELED = "CANCELED", +}; + +export enum RecurrenceType { + SINGLE = "SINGLE", + DATE_RANGE = "DATE_RANGE", + SCATTER = "SCATTER", +}; -export interface AddReviewData { - review_upsert: Review_Key; + +export interface CreateEventData { + event_insert: Event_Key; } -export interface AddReviewVariables { - movieId: UUIDString; - rating: number; - reviewText: string; +export interface CreateEventVariables { + eventName: string; + isRecurring: boolean; + recurrenceType?: RecurrenceType | null; + businessId: UUIDString; + vendorId?: UUIDString | null; + status: EventStatus; + date: TimestampString; + shifts?: string | null; + total?: number | null; + requested?: number | null; + assignedStaff?: string | null; } -export interface CreateMovieData { - movie_insert: Movie_Key; -} - -export interface CreateMovieVariables { - title: string; - genre: string; - imageUrl: string; -} - -export interface DeleteReviewData { - review_delete?: Review_Key | null; -} - -export interface DeleteReviewVariables { - movieId: UUIDString; -} - -export interface GetMovieByIdData { - movie?: { - id: UUIDString; - title: string; - imageUrl: string; - genre?: string | null; - metadata?: { - rating?: number | null; - releaseYear?: number | null; - description?: string | null; - }; - reviews: ({ - reviewText?: string | null; - reviewDate: DateString; - rating?: number | null; - user: { - id: string; - username: string; - } & User_Key; - })[]; - } & Movie_Key; -} - -export interface GetMovieByIdVariables { +export interface Event_Key { id: UUIDString; + __typename?: 'Event_Key'; } -export interface ListMoviesData { - movies: ({ +export interface ListEventsData { + events: ({ id: UUIDString; - title: string; - imageUrl: string; - genre?: string | null; - } & Movie_Key)[]; + eventName: string; + status: EventStatus; + date: TimestampString; + isRecurring: boolean; + recurrenceType?: RecurrenceType | null; + businessId: UUIDString; + vendorId?: UUIDString | null; + total?: number | null; + requested?: number | null; + } & Event_Key)[]; } -export interface ListUserReviewsData { - user?: { - id: string; - username: string; - reviews: ({ - rating?: number | null; - reviewDate: DateString; - reviewText?: string | null; - movie: { - id: UUIDString; - title: string; - } & Movie_Key; - })[]; - } & User_Key; -} - -export interface ListUsersData { - users: ({ - id: string; - username: string; - } & User_Key)[]; -} - -export interface MovieMetadata_Key { - id: UUIDString; - __typename?: 'MovieMetadata_Key'; -} - -export interface Movie_Key { - id: UUIDString; - __typename?: 'Movie_Key'; -} - -export interface Review_Key { - userId: string; - movieId: UUIDString; - __typename?: 'Review_Key'; -} - -export interface SearchMovieData { - movies: ({ - id: UUIDString; - title: string; - genre?: string | null; - imageUrl: string; - } & Movie_Key)[]; -} - -export interface SearchMovieVariables { - titleInput?: string | null; - genre?: string | null; -} - -export interface UpsertUserData { - user_upsert: User_Key; -} - -export interface UpsertUserVariables { - username: string; -} - -export interface User_Key { - id: string; - __typename?: 'User_Key'; -} - -interface CreateMovieRef { +interface CreateEventRef { /* Allow users to create refs without passing in DataConnect */ - (vars: CreateMovieVariables): MutationRef; + (vars: CreateEventVariables): MutationRef; /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect, vars: CreateMovieVariables): MutationRef; + (dc: DataConnect, vars: CreateEventVariables): MutationRef; operationName: string; } -export const createMovieRef: CreateMovieRef; +export const createEventRef: CreateEventRef; -export function createMovie(vars: CreateMovieVariables): MutationPromise; -export function createMovie(dc: DataConnect, vars: CreateMovieVariables): MutationPromise; +export function createEvent(vars: CreateEventVariables): MutationPromise; +export function createEvent(dc: DataConnect, vars: CreateEventVariables): MutationPromise; -interface UpsertUserRef { +interface ListEventsRef { /* Allow users to create refs without passing in DataConnect */ - (vars: UpsertUserVariables): MutationRef; + (): QueryRef; /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect, vars: UpsertUserVariables): MutationRef; + (dc: DataConnect): QueryRef; operationName: string; } -export const upsertUserRef: UpsertUserRef; +export const listEventsRef: ListEventsRef; -export function upsertUser(vars: UpsertUserVariables): MutationPromise; -export function upsertUser(dc: DataConnect, vars: UpsertUserVariables): MutationPromise; - -interface AddReviewRef { - /* Allow users to create refs without passing in DataConnect */ - (vars: AddReviewVariables): MutationRef; - /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect, vars: AddReviewVariables): MutationRef; - operationName: string; -} -export const addReviewRef: AddReviewRef; - -export function addReview(vars: AddReviewVariables): MutationPromise; -export function addReview(dc: DataConnect, vars: AddReviewVariables): MutationPromise; - -interface DeleteReviewRef { - /* Allow users to create refs without passing in DataConnect */ - (vars: DeleteReviewVariables): MutationRef; - /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect, vars: DeleteReviewVariables): MutationRef; - operationName: string; -} -export const deleteReviewRef: DeleteReviewRef; - -export function deleteReview(vars: DeleteReviewVariables): MutationPromise; -export function deleteReview(dc: DataConnect, vars: DeleteReviewVariables): MutationPromise; - -interface ListMoviesRef { - /* Allow users to create refs without passing in DataConnect */ - (): QueryRef; - /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect): QueryRef; - operationName: string; -} -export const listMoviesRef: ListMoviesRef; - -export function listMovies(): QueryPromise; -export function listMovies(dc: DataConnect): QueryPromise; - -interface ListUsersRef { - /* Allow users to create refs without passing in DataConnect */ - (): QueryRef; - /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect): QueryRef; - operationName: string; -} -export const listUsersRef: ListUsersRef; - -export function listUsers(): QueryPromise; -export function listUsers(dc: DataConnect): QueryPromise; - -interface ListUserReviewsRef { - /* Allow users to create refs without passing in DataConnect */ - (): QueryRef; - /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect): QueryRef; - operationName: string; -} -export const listUserReviewsRef: ListUserReviewsRef; - -export function listUserReviews(): QueryPromise; -export function listUserReviews(dc: DataConnect): QueryPromise; - -interface GetMovieByIdRef { - /* Allow users to create refs without passing in DataConnect */ - (vars: GetMovieByIdVariables): QueryRef; - /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect, vars: GetMovieByIdVariables): QueryRef; - operationName: string; -} -export const getMovieByIdRef: GetMovieByIdRef; - -export function getMovieById(vars: GetMovieByIdVariables): QueryPromise; -export function getMovieById(dc: DataConnect, vars: GetMovieByIdVariables): QueryPromise; - -interface SearchMovieRef { - /* Allow users to create refs without passing in DataConnect */ - (vars?: SearchMovieVariables): QueryRef; - /* Allow users to pass in custom DataConnect instances */ - (dc: DataConnect, vars?: SearchMovieVariables): QueryRef; - operationName: string; -} -export const searchMovieRef: SearchMovieRef; - -export function searchMovie(vars?: SearchMovieVariables): QueryPromise; -export function searchMovie(dc: DataConnect, vars?: SearchMovieVariables): QueryPromise; +export function listEvents(): QueryPromise; +export function listEvents(dc: DataConnect): QueryPromise; diff --git a/frontend-web/src/dataconnect-generated/package.json b/frontend-web/src/dataconnect-generated/package.json index 82c276dc..b686c0a0 100644 --- a/frontend-web/src/dataconnect-generated/package.json +++ b/frontend-web/src/dataconnect-generated/package.json @@ -2,7 +2,7 @@ "name": "@dataconnect/generated", "version": "1.0.0", "author": "Firebase (https://firebase.google.com/)", - "description": "Generated SDK For example", + "description": "Generated SDK For krow-connector", "license": "Apache-2.0", "engines": { "node": " >=18.0" diff --git a/frontend-web/src/dataconnect-generated/react/README.md b/frontend-web/src/dataconnect-generated/react/README.md index f9880e6d..24b8cec3 100644 --- a/frontend-web/src/dataconnect-generated/react/README.md +++ b/frontend-web/src/dataconnect-generated/react/README.md @@ -1,5 +1,5 @@ # Generated React README -This README will guide you through the process of using the generated React SDK package for the connector `example`. It will also provide examples on how to use your generated SDK to call your Data Connect queries and mutations. +This README will guide you through the process of using the generated React SDK package for the connector `krow-connector`. It will also provide examples on how to use your generated SDK to call your Data Connect queries and mutations. **If you're looking for the `JavaScript README`, you can find it at [`dataconnect-generated/README.md`](../README.md)** @@ -17,19 +17,12 @@ You can also follow the instructions from the [Data Connect documentation](https - [**Accessing the connector**](#accessing-the-connector) - [*Connecting to the local Emulator*](#connecting-to-the-local-emulator) - [**Queries**](#queries) - - [*ListMovies*](#listmovies) - - [*ListUsers*](#listusers) - - [*ListUserReviews*](#listuserreviews) - - [*GetMovieById*](#getmoviebyid) - - [*SearchMovie*](#searchmovie) + - [*listEvents*](#listevents) - [**Mutations**](#mutations) - - [*CreateMovie*](#createmovie) - - [*UpsertUser*](#upsertuser) - - [*AddReview*](#addreview) - - [*DeleteReview*](#deletereview) + - [*CreateEvent*](#createevent) # TanStack Query Firebase & TanStack React Query -This SDK provides [React](https://react.dev/) hooks generated specific to your application, for the operations found in the connector `example`. These hooks are generated using [TanStack Query Firebase](https://react-query-firebase.invertase.dev/) by our partners at Invertase, a library built on top of [TanStack React Query v5](https://tanstack.com/query/v5/docs/framework/react/overview). +This SDK provides [React](https://react.dev/) hooks generated specific to your application, for the operations found in the connector `krow-connector`. These hooks are generated using [TanStack Query Firebase](https://react-query-firebase.invertase.dev/) by our partners at Invertase, a library built on top of [TanStack React Query v5](https://tanstack.com/query/v5/docs/framework/react/overview). ***You do not need to be familiar with Tanstack Query or Tanstack Query Firebase to use this SDK.*** However, you may find it useful to learn more about them, as they will empower you as a user of this Generated React SDK. @@ -66,7 +59,7 @@ function App() { To learn more about `QueryClientProvider`, see the [TanStack React Query documentation](https://tanstack.com/query/latest/docs/framework/react/quick-start) and the [TanStack Query Firebase documentation](https://invertase.docs.page/tanstack-query-firebase/react#usage). # Accessing the connector -A connector is a collection of Queries and Mutations. One SDK is generated for each connector - this SDK is generated for the connector `example`. +A connector is a collection of Queries and Mutations. One SDK is generated for each connector - this SDK is generated for the connector `krow-connector`. You can find more information about connectors in the [Data Connect documentation](https://firebase.google.com/docs/data-connect#how-does). @@ -116,64 +109,70 @@ Here's a general overview of how to use the generated Query hooks in your code: - Query hooks functions can be called with or without passing in an `options` argument of type `useDataConnectQueryOptions`. To learn more about the `options` argument, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/guides/query-options). - ***Special case:*** If the Query has all optional variables and you would like to provide an `options` argument to the Query hook function without providing any variables, you must pass `undefined` where you would normally pass the Query's variables, and then may provide the `options` argument. -Below are examples of how to use the `example` connector's generated Query hook functions to execute each Query. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#operations-react-angular). +Below are examples of how to use the `krow-connector` connector's generated Query hook functions to execute each Query. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#operations-react-angular). -## ListMovies -You can execute the `ListMovies` Query using the following Query hook function, which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts): +## listEvents +You can execute the `listEvents` Query using the following Query hook function, which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts): ```javascript -useListMovies(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; +useListEvents(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; ``` You can also pass in a `DataConnect` instance to the Query hook function. ```javascript -useListMovies(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; +useListEvents(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; ``` ### Variables -The `ListMovies` Query has no variables. +The `listEvents` Query has no variables. ### Return Type -Recall that calling the `ListMovies` Query hook function returns a `UseQueryResult` object. This object holds the state of your Query, including whether the Query is loading, has completed, or has succeeded/failed, and any data returned by the Query, among other things. +Recall that calling the `listEvents` Query hook function returns a `UseQueryResult` object. This object holds the state of your Query, including whether the Query is loading, has completed, or has succeeded/failed, and any data returned by the Query, among other things. To check the status of a Query, use the `UseQueryResult.status` field. You can also check for pending / success / error status using the `UseQueryResult.isPending`, `UseQueryResult.isSuccess`, and `UseQueryResult.isError` fields. -To access the data returned by a Query, use the `UseQueryResult.data` field. The data for the `ListMovies` Query is of type `ListMoviesData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: +To access the data returned by a Query, use the `UseQueryResult.data` field. The data for the `listEvents` Query is of type `ListEventsData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: ```javascript -export interface ListMoviesData { - movies: ({ +export interface ListEventsData { + events: ({ id: UUIDString; - title: string; - imageUrl: string; - genre?: string | null; - } & Movie_Key)[]; + eventName: string; + status: EventStatus; + date: TimestampString; + isRecurring: boolean; + recurrenceType?: RecurrenceType | null; + businessId: UUIDString; + vendorId?: UUIDString | null; + total?: number | null; + requested?: number | null; + } & Event_Key)[]; } ``` To learn more about the `UseQueryResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery). -### Using `ListMovies`'s Query hook function +### Using `listEvents`'s Query hook function ```javascript import { getDataConnect } from 'firebase/data-connect'; import { connectorConfig } from '@dataconnect/generated'; -import { useListMovies } from '@dataconnect/generated/react' +import { useListEvents } from '@dataconnect/generated/react' -export default function ListMoviesComponent() { +export default function ListEventsComponent() { // You don't have to do anything to "execute" the Query. // Call the Query hook function to get a `UseQueryResult` object which holds the state of your Query. - const query = useListMovies(); + const query = useListEvents(); // You can also pass in a `DataConnect` instance to the Query hook function. const dataConnect = getDataConnect(connectorConfig); - const query = useListMovies(dataConnect); + const query = useListEvents(dataConnect); // You can also pass in a `useDataConnectQueryOptions` object to the Query hook function. const options = { staleTime: 5 * 1000 }; - const query = useListMovies(options); + const query = useListEvents(options); // You can also pass both a `DataConnect` instance and a `useDataConnectQueryOptions` object. const dataConnect = getDataConnect(connectorConfig); const options = { staleTime: 5 * 1000 }; - const query = useListMovies(dataConnect, options); + const query = useListEvents(dataConnect, options); // Then, you can render your component dynamically based on the status of the Query. if (query.isPending) { @@ -186,356 +185,7 @@ export default function ListMoviesComponent() { // If the Query is successful, you can access the data returned using the `UseQueryResult.data` field. if (query.isSuccess) { - console.log(query.data.movies); - } - return
Query execution {query.isSuccess ? 'successful' : 'failed'}!
; -} -``` - -## ListUsers -You can execute the `ListUsers` Query using the following Query hook function, which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts): - -```javascript -useListUsers(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` -You can also pass in a `DataConnect` instance to the Query hook function. -```javascript -useListUsers(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` - -### Variables -The `ListUsers` Query has no variables. -### Return Type -Recall that calling the `ListUsers` Query hook function returns a `UseQueryResult` object. This object holds the state of your Query, including whether the Query is loading, has completed, or has succeeded/failed, and any data returned by the Query, among other things. - -To check the status of a Query, use the `UseQueryResult.status` field. You can also check for pending / success / error status using the `UseQueryResult.isPending`, `UseQueryResult.isSuccess`, and `UseQueryResult.isError` fields. - -To access the data returned by a Query, use the `UseQueryResult.data` field. The data for the `ListUsers` Query is of type `ListUsersData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: -```javascript -export interface ListUsersData { - users: ({ - id: string; - username: string; - } & User_Key)[]; -} -``` - -To learn more about the `UseQueryResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery). - -### Using `ListUsers`'s Query hook function - -```javascript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig } from '@dataconnect/generated'; -import { useListUsers } from '@dataconnect/generated/react' - -export default function ListUsersComponent() { - // You don't have to do anything to "execute" the Query. - // Call the Query hook function to get a `UseQueryResult` object which holds the state of your Query. - const query = useListUsers(); - - // You can also pass in a `DataConnect` instance to the Query hook function. - const dataConnect = getDataConnect(connectorConfig); - const query = useListUsers(dataConnect); - - // You can also pass in a `useDataConnectQueryOptions` object to the Query hook function. - const options = { staleTime: 5 * 1000 }; - const query = useListUsers(options); - - // You can also pass both a `DataConnect` instance and a `useDataConnectQueryOptions` object. - const dataConnect = getDataConnect(connectorConfig); - const options = { staleTime: 5 * 1000 }; - const query = useListUsers(dataConnect, options); - - // Then, you can render your component dynamically based on the status of the Query. - if (query.isPending) { - return
Loading...
; - } - - if (query.isError) { - return
Error: {query.error.message}
; - } - - // If the Query is successful, you can access the data returned using the `UseQueryResult.data` field. - if (query.isSuccess) { - console.log(query.data.users); - } - return
Query execution {query.isSuccess ? 'successful' : 'failed'}!
; -} -``` - -## ListUserReviews -You can execute the `ListUserReviews` Query using the following Query hook function, which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts): - -```javascript -useListUserReviews(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` -You can also pass in a `DataConnect` instance to the Query hook function. -```javascript -useListUserReviews(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` - -### Variables -The `ListUserReviews` Query has no variables. -### Return Type -Recall that calling the `ListUserReviews` Query hook function returns a `UseQueryResult` object. This object holds the state of your Query, including whether the Query is loading, has completed, or has succeeded/failed, and any data returned by the Query, among other things. - -To check the status of a Query, use the `UseQueryResult.status` field. You can also check for pending / success / error status using the `UseQueryResult.isPending`, `UseQueryResult.isSuccess`, and `UseQueryResult.isError` fields. - -To access the data returned by a Query, use the `UseQueryResult.data` field. The data for the `ListUserReviews` Query is of type `ListUserReviewsData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: -```javascript -export interface ListUserReviewsData { - user?: { - id: string; - username: string; - reviews: ({ - rating?: number | null; - reviewDate: DateString; - reviewText?: string | null; - movie: { - id: UUIDString; - title: string; - } & Movie_Key; - })[]; - } & User_Key; -} -``` - -To learn more about the `UseQueryResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery). - -### Using `ListUserReviews`'s Query hook function - -```javascript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig } from '@dataconnect/generated'; -import { useListUserReviews } from '@dataconnect/generated/react' - -export default function ListUserReviewsComponent() { - // You don't have to do anything to "execute" the Query. - // Call the Query hook function to get a `UseQueryResult` object which holds the state of your Query. - const query = useListUserReviews(); - - // You can also pass in a `DataConnect` instance to the Query hook function. - const dataConnect = getDataConnect(connectorConfig); - const query = useListUserReviews(dataConnect); - - // You can also pass in a `useDataConnectQueryOptions` object to the Query hook function. - const options = { staleTime: 5 * 1000 }; - const query = useListUserReviews(options); - - // You can also pass both a `DataConnect` instance and a `useDataConnectQueryOptions` object. - const dataConnect = getDataConnect(connectorConfig); - const options = { staleTime: 5 * 1000 }; - const query = useListUserReviews(dataConnect, options); - - // Then, you can render your component dynamically based on the status of the Query. - if (query.isPending) { - return
Loading...
; - } - - if (query.isError) { - return
Error: {query.error.message}
; - } - - // If the Query is successful, you can access the data returned using the `UseQueryResult.data` field. - if (query.isSuccess) { - console.log(query.data.user); - } - return
Query execution {query.isSuccess ? 'successful' : 'failed'}!
; -} -``` - -## GetMovieById -You can execute the `GetMovieById` Query using the following Query hook function, which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts): - -```javascript -useGetMovieById(dc: DataConnect, vars: GetMovieByIdVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` -You can also pass in a `DataConnect` instance to the Query hook function. -```javascript -useGetMovieById(vars: GetMovieByIdVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` - -### Variables -The `GetMovieById` Query requires an argument of type `GetMovieByIdVariables`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: - -```javascript -export interface GetMovieByIdVariables { - id: UUIDString; -} -``` -### Return Type -Recall that calling the `GetMovieById` Query hook function returns a `UseQueryResult` object. This object holds the state of your Query, including whether the Query is loading, has completed, or has succeeded/failed, and any data returned by the Query, among other things. - -To check the status of a Query, use the `UseQueryResult.status` field. You can also check for pending / success / error status using the `UseQueryResult.isPending`, `UseQueryResult.isSuccess`, and `UseQueryResult.isError` fields. - -To access the data returned by a Query, use the `UseQueryResult.data` field. The data for the `GetMovieById` Query is of type `GetMovieByIdData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: -```javascript -export interface GetMovieByIdData { - movie?: { - id: UUIDString; - title: string; - imageUrl: string; - genre?: string | null; - metadata?: { - rating?: number | null; - releaseYear?: number | null; - description?: string | null; - }; - reviews: ({ - reviewText?: string | null; - reviewDate: DateString; - rating?: number | null; - user: { - id: string; - username: string; - } & User_Key; - })[]; - } & Movie_Key; -} -``` - -To learn more about the `UseQueryResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery). - -### Using `GetMovieById`'s Query hook function - -```javascript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, GetMovieByIdVariables } from '@dataconnect/generated'; -import { useGetMovieById } from '@dataconnect/generated/react' - -export default function GetMovieByIdComponent() { - // The `useGetMovieById` Query hook requires an argument of type `GetMovieByIdVariables`: - const getMovieByIdVars: GetMovieByIdVariables = { - id: ..., - }; - - // You don't have to do anything to "execute" the Query. - // Call the Query hook function to get a `UseQueryResult` object which holds the state of your Query. - const query = useGetMovieById(getMovieByIdVars); - // Variables can be defined inline as well. - const query = useGetMovieById({ id: ..., }); - - // You can also pass in a `DataConnect` instance to the Query hook function. - const dataConnect = getDataConnect(connectorConfig); - const query = useGetMovieById(dataConnect, getMovieByIdVars); - - // You can also pass in a `useDataConnectQueryOptions` object to the Query hook function. - const options = { staleTime: 5 * 1000 }; - const query = useGetMovieById(getMovieByIdVars, options); - - // You can also pass both a `DataConnect` instance and a `useDataConnectQueryOptions` object. - const dataConnect = getDataConnect(connectorConfig); - const options = { staleTime: 5 * 1000 }; - const query = useGetMovieById(dataConnect, getMovieByIdVars, options); - - // Then, you can render your component dynamically based on the status of the Query. - if (query.isPending) { - return
Loading...
; - } - - if (query.isError) { - return
Error: {query.error.message}
; - } - - // If the Query is successful, you can access the data returned using the `UseQueryResult.data` field. - if (query.isSuccess) { - console.log(query.data.movie); - } - return
Query execution {query.isSuccess ? 'successful' : 'failed'}!
; -} -``` - -## SearchMovie -You can execute the `SearchMovie` Query using the following Query hook function, which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts): - -```javascript -useSearchMovie(dc: DataConnect, vars?: SearchMovieVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` -You can also pass in a `DataConnect` instance to the Query hook function. -```javascript -useSearchMovie(vars?: SearchMovieVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -``` - -### Variables -The `SearchMovie` Query has an optional argument of type `SearchMovieVariables`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: - -```javascript -export interface SearchMovieVariables { - titleInput?: string | null; - genre?: string | null; -} -``` -### Return Type -Recall that calling the `SearchMovie` Query hook function returns a `UseQueryResult` object. This object holds the state of your Query, including whether the Query is loading, has completed, or has succeeded/failed, and any data returned by the Query, among other things. - -To check the status of a Query, use the `UseQueryResult.status` field. You can also check for pending / success / error status using the `UseQueryResult.isPending`, `UseQueryResult.isSuccess`, and `UseQueryResult.isError` fields. - -To access the data returned by a Query, use the `UseQueryResult.data` field. The data for the `SearchMovie` Query is of type `SearchMovieData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: -```javascript -export interface SearchMovieData { - movies: ({ - id: UUIDString; - title: string; - genre?: string | null; - imageUrl: string; - } & Movie_Key)[]; -} -``` - -To learn more about the `UseQueryResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery). - -### Using `SearchMovie`'s Query hook function - -```javascript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, SearchMovieVariables } from '@dataconnect/generated'; -import { useSearchMovie } from '@dataconnect/generated/react' - -export default function SearchMovieComponent() { - // The `useSearchMovie` Query hook has an optional argument of type `SearchMovieVariables`: - const searchMovieVars: SearchMovieVariables = { - titleInput: ..., // optional - genre: ..., // optional - }; - - // You don't have to do anything to "execute" the Query. - // Call the Query hook function to get a `UseQueryResult` object which holds the state of your Query. - const query = useSearchMovie(searchMovieVars); - // Variables can be defined inline as well. - const query = useSearchMovie({ titleInput: ..., genre: ..., }); - // Since all variables are optional for this Query, you can omit the `SearchMovieVariables` argument. - // (as long as you don't want to provide any `options`!) - const query = useSearchMovie(); - - // You can also pass in a `DataConnect` instance to the Query hook function. - const dataConnect = getDataConnect(connectorConfig); - const query = useSearchMovie(dataConnect, searchMovieVars); - - // You can also pass in a `useDataConnectQueryOptions` object to the Query hook function. - const options = { staleTime: 5 * 1000 }; - const query = useSearchMovie(searchMovieVars, options); - // If you'd like to provide options without providing any variables, you must - // pass `undefined` where you would normally pass the variables. - const query = useSearchMovie(undefined, options); - - // You can also pass both a `DataConnect` instance and a `useDataConnectQueryOptions` object. - const dataConnect = getDataConnect(connectorConfig); - const options = { staleTime: 5 * 1000 }; - const query = useSearchMovie(dataConnect, searchMovieVars /** or undefined */, options); - - // Then, you can render your component dynamically based on the status of the Query. - if (query.isPending) { - return
Loading...
; - } - - if (query.isError) { - return
Error: {query.error.message}
; - } - - // If the Query is successful, you can access the data returned using the `UseQueryResult.data` field. - if (query.isSuccess) { - console.log(query.data.movies); + console.log(query.data.events); } return
Query execution {query.isSuccess ? 'successful' : 'failed'}!
; } @@ -564,88 +214,104 @@ Here's a general overview of how to use the generated Mutation hooks in your cod - `UseMutationResult.mutate()` also accepts an `options` argument of type `useDataConnectMutationOptions`. - ***Special case:*** If the Mutation has no arguments (or all optional arguments and you wish to provide none), and you want to pass `options` to `UseMutationResult.mutate()`, you must pass `undefined` where you would normally pass the Mutation's arguments, and then may provide the options argument. -Below are examples of how to use the `example` connector's generated Mutation hook functions to execute each Mutation. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#operations-react-angular). +Below are examples of how to use the `krow-connector` connector's generated Mutation hook functions to execute each Mutation. You can also follow the examples from the [Data Connect documentation](https://firebase.google.com/docs/data-connect/web-sdk#operations-react-angular). -## CreateMovie -You can execute the `CreateMovie` Mutation using the `UseMutationResult` object returned by the following Mutation hook function (which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts)): +## CreateEvent +You can execute the `CreateEvent` Mutation using the `UseMutationResult` object returned by the following Mutation hook function (which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts)): ```javascript -useCreateMovie(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; +useCreateEvent(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; ``` You can also pass in a `DataConnect` instance to the Mutation hook function. ```javascript -useCreateMovie(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; +useCreateEvent(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; ``` ### Variables -The `CreateMovie` Mutation requires an argument of type `CreateMovieVariables`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: +The `CreateEvent` Mutation requires an argument of type `CreateEventVariables`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: ```javascript -export interface CreateMovieVariables { - title: string; - genre: string; - imageUrl: string; +export interface CreateEventVariables { + eventName: string; + isRecurring: boolean; + recurrenceType?: RecurrenceType | null; + businessId: UUIDString; + vendorId?: UUIDString | null; + status: EventStatus; + date: TimestampString; + shifts?: string | null; + total?: number | null; + requested?: number | null; + assignedStaff?: string | null; } ``` ### Return Type -Recall that calling the `CreateMovie` Mutation hook function returns a `UseMutationResult` object. This object holds the state of your Mutation, including whether the Mutation is loading, has completed, or has succeeded/failed, among other things. +Recall that calling the `CreateEvent` Mutation hook function returns a `UseMutationResult` object. This object holds the state of your Mutation, including whether the Mutation is loading, has completed, or has succeeded/failed, among other things. To check the status of a Mutation, use the `UseMutationResult.status` field. You can also check for pending / success / error status using the `UseMutationResult.isPending`, `UseMutationResult.isSuccess`, and `UseMutationResult.isError` fields. To execute the Mutation, call `UseMutationResult.mutate()`. This function executes the Mutation, but does not return the data from the Mutation. -To access the data returned by a Mutation, use the `UseMutationResult.data` field. The data for the `CreateMovie` Mutation is of type `CreateMovieData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: +To access the data returned by a Mutation, use the `UseMutationResult.data` field. The data for the `CreateEvent` Mutation is of type `CreateEventData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: ```javascript -export interface CreateMovieData { - movie_insert: Movie_Key; +export interface CreateEventData { + event_insert: Event_Key; } ``` To learn more about the `UseMutationResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useMutation). -### Using `CreateMovie`'s Mutation hook function +### Using `CreateEvent`'s Mutation hook function ```javascript import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, CreateMovieVariables } from '@dataconnect/generated'; -import { useCreateMovie } from '@dataconnect/generated/react' +import { connectorConfig, CreateEventVariables } from '@dataconnect/generated'; +import { useCreateEvent } from '@dataconnect/generated/react' -export default function CreateMovieComponent() { +export default function CreateEventComponent() { // Call the Mutation hook function to get a `UseMutationResult` object which holds the state of your Mutation. - const mutation = useCreateMovie(); + const mutation = useCreateEvent(); // You can also pass in a `DataConnect` instance to the Mutation hook function. const dataConnect = getDataConnect(connectorConfig); - const mutation = useCreateMovie(dataConnect); + const mutation = useCreateEvent(dataConnect); // You can also pass in a `useDataConnectMutationOptions` object to the Mutation hook function. const options = { onSuccess: () => { console.log('Mutation succeeded!'); } }; - const mutation = useCreateMovie(options); + const mutation = useCreateEvent(options); // You can also pass both a `DataConnect` instance and a `useDataConnectMutationOptions` object. const dataConnect = getDataConnect(connectorConfig); const options = { onSuccess: () => { console.log('Mutation succeeded!'); } }; - const mutation = useCreateMovie(dataConnect, options); + const mutation = useCreateEvent(dataConnect, options); // After calling the Mutation hook function, you must call `UseMutationResult.mutate()` to execute the Mutation. - // The `useCreateMovie` Mutation requires an argument of type `CreateMovieVariables`: - const createMovieVars: CreateMovieVariables = { - title: ..., - genre: ..., - imageUrl: ..., + // The `useCreateEvent` Mutation requires an argument of type `CreateEventVariables`: + const createEventVars: CreateEventVariables = { + eventName: ..., + isRecurring: ..., + recurrenceType: ..., // optional + businessId: ..., + vendorId: ..., // optional + status: ..., + date: ..., + shifts: ..., // optional + total: ..., // optional + requested: ..., // optional + assignedStaff: ..., // optional }; - mutation.mutate(createMovieVars); + mutation.mutate(createEventVars); // Variables can be defined inline as well. - mutation.mutate({ title: ..., genre: ..., imageUrl: ..., }); + mutation.mutate({ eventName: ..., isRecurring: ..., recurrenceType: ..., businessId: ..., vendorId: ..., status: ..., date: ..., shifts: ..., total: ..., requested: ..., assignedStaff: ..., }); // You can also pass in a `useDataConnectMutationOptions` object to `UseMutationResult.mutate()`. const options = { onSuccess: () => { console.log('Mutation succeeded!'); } }; - mutation.mutate(createMovieVars, options); + mutation.mutate(createEventVars, options); // Then, you can render your component dynamically based on the status of the Mutation. if (mutation.isPending) { @@ -658,293 +324,7 @@ export default function CreateMovieComponent() { // If the Mutation is successful, you can access the data returned using the `UseMutationResult.data` field. if (mutation.isSuccess) { - console.log(mutation.data.movie_insert); - } - return
Mutation execution {mutation.isSuccess ? 'successful' : 'failed'}!
; -} -``` - -## UpsertUser -You can execute the `UpsertUser` Mutation using the `UseMutationResult` object returned by the following Mutation hook function (which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts)): -```javascript -useUpsertUser(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -``` -You can also pass in a `DataConnect` instance to the Mutation hook function. -```javascript -useUpsertUser(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -``` - -### Variables -The `UpsertUser` Mutation requires an argument of type `UpsertUserVariables`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: - -```javascript -export interface UpsertUserVariables { - username: string; -} -``` -### Return Type -Recall that calling the `UpsertUser` Mutation hook function returns a `UseMutationResult` object. This object holds the state of your Mutation, including whether the Mutation is loading, has completed, or has succeeded/failed, among other things. - -To check the status of a Mutation, use the `UseMutationResult.status` field. You can also check for pending / success / error status using the `UseMutationResult.isPending`, `UseMutationResult.isSuccess`, and `UseMutationResult.isError` fields. - -To execute the Mutation, call `UseMutationResult.mutate()`. This function executes the Mutation, but does not return the data from the Mutation. - -To access the data returned by a Mutation, use the `UseMutationResult.data` field. The data for the `UpsertUser` Mutation is of type `UpsertUserData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: -```javascript -export interface UpsertUserData { - user_upsert: User_Key; -} -``` - -To learn more about the `UseMutationResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useMutation). - -### Using `UpsertUser`'s Mutation hook function - -```javascript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, UpsertUserVariables } from '@dataconnect/generated'; -import { useUpsertUser } from '@dataconnect/generated/react' - -export default function UpsertUserComponent() { - // Call the Mutation hook function to get a `UseMutationResult` object which holds the state of your Mutation. - const mutation = useUpsertUser(); - - // You can also pass in a `DataConnect` instance to the Mutation hook function. - const dataConnect = getDataConnect(connectorConfig); - const mutation = useUpsertUser(dataConnect); - - // You can also pass in a `useDataConnectMutationOptions` object to the Mutation hook function. - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - const mutation = useUpsertUser(options); - - // You can also pass both a `DataConnect` instance and a `useDataConnectMutationOptions` object. - const dataConnect = getDataConnect(connectorConfig); - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - const mutation = useUpsertUser(dataConnect, options); - - // After calling the Mutation hook function, you must call `UseMutationResult.mutate()` to execute the Mutation. - // The `useUpsertUser` Mutation requires an argument of type `UpsertUserVariables`: - const upsertUserVars: UpsertUserVariables = { - username: ..., - }; - mutation.mutate(upsertUserVars); - // Variables can be defined inline as well. - mutation.mutate({ username: ..., }); - - // You can also pass in a `useDataConnectMutationOptions` object to `UseMutationResult.mutate()`. - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - mutation.mutate(upsertUserVars, options); - - // Then, you can render your component dynamically based on the status of the Mutation. - if (mutation.isPending) { - return
Loading...
; - } - - if (mutation.isError) { - return
Error: {mutation.error.message}
; - } - - // If the Mutation is successful, you can access the data returned using the `UseMutationResult.data` field. - if (mutation.isSuccess) { - console.log(mutation.data.user_upsert); - } - return
Mutation execution {mutation.isSuccess ? 'successful' : 'failed'}!
; -} -``` - -## AddReview -You can execute the `AddReview` Mutation using the `UseMutationResult` object returned by the following Mutation hook function (which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts)): -```javascript -useAddReview(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -``` -You can also pass in a `DataConnect` instance to the Mutation hook function. -```javascript -useAddReview(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -``` - -### Variables -The `AddReview` Mutation requires an argument of type `AddReviewVariables`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: - -```javascript -export interface AddReviewVariables { - movieId: UUIDString; - rating: number; - reviewText: string; -} -``` -### Return Type -Recall that calling the `AddReview` Mutation hook function returns a `UseMutationResult` object. This object holds the state of your Mutation, including whether the Mutation is loading, has completed, or has succeeded/failed, among other things. - -To check the status of a Mutation, use the `UseMutationResult.status` field. You can also check for pending / success / error status using the `UseMutationResult.isPending`, `UseMutationResult.isSuccess`, and `UseMutationResult.isError` fields. - -To execute the Mutation, call `UseMutationResult.mutate()`. This function executes the Mutation, but does not return the data from the Mutation. - -To access the data returned by a Mutation, use the `UseMutationResult.data` field. The data for the `AddReview` Mutation is of type `AddReviewData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: -```javascript -export interface AddReviewData { - review_upsert: Review_Key; -} -``` - -To learn more about the `UseMutationResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useMutation). - -### Using `AddReview`'s Mutation hook function - -```javascript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, AddReviewVariables } from '@dataconnect/generated'; -import { useAddReview } from '@dataconnect/generated/react' - -export default function AddReviewComponent() { - // Call the Mutation hook function to get a `UseMutationResult` object which holds the state of your Mutation. - const mutation = useAddReview(); - - // You can also pass in a `DataConnect` instance to the Mutation hook function. - const dataConnect = getDataConnect(connectorConfig); - const mutation = useAddReview(dataConnect); - - // You can also pass in a `useDataConnectMutationOptions` object to the Mutation hook function. - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - const mutation = useAddReview(options); - - // You can also pass both a `DataConnect` instance and a `useDataConnectMutationOptions` object. - const dataConnect = getDataConnect(connectorConfig); - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - const mutation = useAddReview(dataConnect, options); - - // After calling the Mutation hook function, you must call `UseMutationResult.mutate()` to execute the Mutation. - // The `useAddReview` Mutation requires an argument of type `AddReviewVariables`: - const addReviewVars: AddReviewVariables = { - movieId: ..., - rating: ..., - reviewText: ..., - }; - mutation.mutate(addReviewVars); - // Variables can be defined inline as well. - mutation.mutate({ movieId: ..., rating: ..., reviewText: ..., }); - - // You can also pass in a `useDataConnectMutationOptions` object to `UseMutationResult.mutate()`. - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - mutation.mutate(addReviewVars, options); - - // Then, you can render your component dynamically based on the status of the Mutation. - if (mutation.isPending) { - return
Loading...
; - } - - if (mutation.isError) { - return
Error: {mutation.error.message}
; - } - - // If the Mutation is successful, you can access the data returned using the `UseMutationResult.data` field. - if (mutation.isSuccess) { - console.log(mutation.data.review_upsert); - } - return
Mutation execution {mutation.isSuccess ? 'successful' : 'failed'}!
; -} -``` - -## DeleteReview -You can execute the `DeleteReview` Mutation using the `UseMutationResult` object returned by the following Mutation hook function (which is defined in [dataconnect-generated/react/index.d.ts](./index.d.ts)): -```javascript -useDeleteReview(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -``` -You can also pass in a `DataConnect` instance to the Mutation hook function. -```javascript -useDeleteReview(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -``` - -### Variables -The `DeleteReview` Mutation requires an argument of type `DeleteReviewVariables`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: - -```javascript -export interface DeleteReviewVariables { - movieId: UUIDString; -} -``` -### Return Type -Recall that calling the `DeleteReview` Mutation hook function returns a `UseMutationResult` object. This object holds the state of your Mutation, including whether the Mutation is loading, has completed, or has succeeded/failed, among other things. - -To check the status of a Mutation, use the `UseMutationResult.status` field. You can also check for pending / success / error status using the `UseMutationResult.isPending`, `UseMutationResult.isSuccess`, and `UseMutationResult.isError` fields. - -To execute the Mutation, call `UseMutationResult.mutate()`. This function executes the Mutation, but does not return the data from the Mutation. - -To access the data returned by a Mutation, use the `UseMutationResult.data` field. The data for the `DeleteReview` Mutation is of type `DeleteReviewData`, which is defined in [dataconnect-generated/index.d.ts](../index.d.ts). It has the following fields: -```javascript -export interface DeleteReviewData { - review_delete?: Review_Key | null; -} -``` - -To learn more about the `UseMutationResult` object, see the [TanStack React Query documentation](https://tanstack.com/query/v5/docs/framework/react/reference/useMutation). - -### Using `DeleteReview`'s Mutation hook function - -```javascript -import { getDataConnect } from 'firebase/data-connect'; -import { connectorConfig, DeleteReviewVariables } from '@dataconnect/generated'; -import { useDeleteReview } from '@dataconnect/generated/react' - -export default function DeleteReviewComponent() { - // Call the Mutation hook function to get a `UseMutationResult` object which holds the state of your Mutation. - const mutation = useDeleteReview(); - - // You can also pass in a `DataConnect` instance to the Mutation hook function. - const dataConnect = getDataConnect(connectorConfig); - const mutation = useDeleteReview(dataConnect); - - // You can also pass in a `useDataConnectMutationOptions` object to the Mutation hook function. - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - const mutation = useDeleteReview(options); - - // You can also pass both a `DataConnect` instance and a `useDataConnectMutationOptions` object. - const dataConnect = getDataConnect(connectorConfig); - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - const mutation = useDeleteReview(dataConnect, options); - - // After calling the Mutation hook function, you must call `UseMutationResult.mutate()` to execute the Mutation. - // The `useDeleteReview` Mutation requires an argument of type `DeleteReviewVariables`: - const deleteReviewVars: DeleteReviewVariables = { - movieId: ..., - }; - mutation.mutate(deleteReviewVars); - // Variables can be defined inline as well. - mutation.mutate({ movieId: ..., }); - - // You can also pass in a `useDataConnectMutationOptions` object to `UseMutationResult.mutate()`. - const options = { - onSuccess: () => { console.log('Mutation succeeded!'); } - }; - mutation.mutate(deleteReviewVars, options); - - // Then, you can render your component dynamically based on the status of the Mutation. - if (mutation.isPending) { - return
Loading...
; - } - - if (mutation.isError) { - return
Error: {mutation.error.message}
; - } - - // If the Mutation is successful, you can access the data returned using the `UseMutationResult.data` field. - if (mutation.isSuccess) { - console.log(mutation.data.review_delete); + console.log(mutation.data.event_insert); } return
Mutation execution {mutation.isSuccess ? 'successful' : 'failed'}!
; } diff --git a/frontend-web/src/dataconnect-generated/react/esm/index.esm.js b/frontend-web/src/dataconnect-generated/react/esm/index.esm.js index 5f74e444..3463a0fa 100644 --- a/frontend-web/src/dataconnect-generated/react/esm/index.esm.js +++ b/frontend-web/src/dataconnect-generated/react/esm/index.esm.js @@ -1,66 +1,18 @@ -import { createMovieRef, upsertUserRef, addReviewRef, deleteReviewRef, listMoviesRef, listUsersRef, listUserReviewsRef, getMovieByIdRef, searchMovieRef, connectorConfig } from '../../esm/index.esm.js'; +import { createEventRef, listEventsRef, connectorConfig } from '../../esm/index.esm.js'; import { validateArgs, CallerSdkTypeEnum } from 'firebase/data-connect'; import { useDataConnectQuery, useDataConnectMutation, validateReactArgs } from '@tanstack-query-firebase/react/data-connect'; -export function useCreateMovie(dcOrOptions, options) { +export function useCreateEvent(dcOrOptions, options) { const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); function refFactory(vars) { - return createMovieRef(dcInstance, vars); - } - return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -export function useUpsertUser(dcOrOptions, options) { - const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); - function refFactory(vars) { - return upsertUserRef(dcInstance, vars); - } - return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -export function useAddReview(dcOrOptions, options) { - const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); - function refFactory(vars) { - return addReviewRef(dcInstance, vars); - } - return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -export function useDeleteReview(dcOrOptions, options) { - const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); - function refFactory(vars) { - return deleteReviewRef(dcInstance, vars); + return createEventRef(dcInstance, vars); } return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); } -export function useListMovies(dcOrOptions, options) { +export function useListEvents(dcOrOptions, options) { const { dc: dcInstance, options: inputOpts } = validateReactArgs(connectorConfig, dcOrOptions, options); - const ref = listMoviesRef(dcInstance); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -export function useListUsers(dcOrOptions, options) { - const { dc: dcInstance, options: inputOpts } = validateReactArgs(connectorConfig, dcOrOptions, options); - const ref = listUsersRef(dcInstance); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -export function useListUserReviews(dcOrOptions, options) { - const { dc: dcInstance, options: inputOpts } = validateReactArgs(connectorConfig, dcOrOptions, options); - const ref = listUserReviewsRef(dcInstance); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -export function useGetMovieById(dcOrVars, varsOrOptions, options) { - const { dc: dcInstance, vars: inputVars, options: inputOpts } = validateReactArgs(connectorConfig, dcOrVars, varsOrOptions, options, true, true); - const ref = getMovieByIdRef(dcInstance, inputVars); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -export function useSearchMovie(dcOrVars, varsOrOptions, options) { - const { dc: dcInstance, vars: inputVars, options: inputOpts } = validateReactArgs(connectorConfig, dcOrVars, varsOrOptions, options, true, false); - const ref = searchMovieRef(dcInstance, inputVars); + const ref = listEventsRef(dcInstance); return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); } \ No newline at end of file diff --git a/frontend-web/src/dataconnect-generated/react/index.cjs.js b/frontend-web/src/dataconnect-generated/react/index.cjs.js index 26187b19..52b5314b 100644 --- a/frontend-web/src/dataconnect-generated/react/index.cjs.js +++ b/frontend-web/src/dataconnect-generated/react/index.cjs.js @@ -1,66 +1,18 @@ -const { createMovieRef, upsertUserRef, addReviewRef, deleteReviewRef, listMoviesRef, listUsersRef, listUserReviewsRef, getMovieByIdRef, searchMovieRef, connectorConfig } = require('../index.cjs.js'); +const { createEventRef, listEventsRef, connectorConfig } = require('../index.cjs.js'); const { validateArgs, CallerSdkTypeEnum } = require('firebase/data-connect'); const { useDataConnectQuery, useDataConnectMutation, validateReactArgs } = require('@tanstack-query-firebase/react/data-connect'); -exports.useCreateMovie = function useCreateMovie(dcOrOptions, options) { +exports.useCreateEvent = function useCreateEvent(dcOrOptions, options) { const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); function refFactory(vars) { - return createMovieRef(dcInstance, vars); - } - return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -exports.useUpsertUser = function useUpsertUser(dcOrOptions, options) { - const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); - function refFactory(vars) { - return upsertUserRef(dcInstance, vars); - } - return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -exports.useAddReview = function useAddReview(dcOrOptions, options) { - const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); - function refFactory(vars) { - return addReviewRef(dcInstance, vars); - } - return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -exports.useDeleteReview = function useDeleteReview(dcOrOptions, options) { - const { dc: dcInstance, vars: inputOpts } = validateArgs(connectorConfig, dcOrOptions, options); - function refFactory(vars) { - return deleteReviewRef(dcInstance, vars); + return createEventRef(dcInstance, vars); } return useDataConnectMutation(refFactory, inputOpts, CallerSdkTypeEnum.GeneratedReact); } -exports.useListMovies = function useListMovies(dcOrOptions, options) { +exports.useListEvents = function useListEvents(dcOrOptions, options) { const { dc: dcInstance, options: inputOpts } = validateReactArgs(connectorConfig, dcOrOptions, options); - const ref = listMoviesRef(dcInstance); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -exports.useListUsers = function useListUsers(dcOrOptions, options) { - const { dc: dcInstance, options: inputOpts } = validateReactArgs(connectorConfig, dcOrOptions, options); - const ref = listUsersRef(dcInstance); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -exports.useListUserReviews = function useListUserReviews(dcOrOptions, options) { - const { dc: dcInstance, options: inputOpts } = validateReactArgs(connectorConfig, dcOrOptions, options); - const ref = listUserReviewsRef(dcInstance); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -exports.useGetMovieById = function useGetMovieById(dcOrVars, varsOrOptions, options) { - const { dc: dcInstance, vars: inputVars, options: inputOpts } = validateReactArgs(connectorConfig, dcOrVars, varsOrOptions, options, true, true); - const ref = getMovieByIdRef(dcInstance, inputVars); - return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); -} - -exports.useSearchMovie = function useSearchMovie(dcOrVars, varsOrOptions, options) { - const { dc: dcInstance, vars: inputVars, options: inputOpts } = validateReactArgs(connectorConfig, dcOrVars, varsOrOptions, options, true, false); - const ref = searchMovieRef(dcInstance, inputVars); + const ref = listEventsRef(dcInstance); return useDataConnectQuery(ref, inputOpts, CallerSdkTypeEnum.GeneratedReact); } \ No newline at end of file diff --git a/frontend-web/src/dataconnect-generated/react/index.d.ts b/frontend-web/src/dataconnect-generated/react/index.d.ts index b868c4dd..cab1da38 100644 --- a/frontend-web/src/dataconnect-generated/react/index.d.ts +++ b/frontend-web/src/dataconnect-generated/react/index.d.ts @@ -1,33 +1,12 @@ -import { CreateMovieData, CreateMovieVariables, UpsertUserData, UpsertUserVariables, AddReviewData, AddReviewVariables, DeleteReviewData, DeleteReviewVariables, ListMoviesData, ListUsersData, ListUserReviewsData, GetMovieByIdData, GetMovieByIdVariables, SearchMovieData, SearchMovieVariables } from '../'; +import { CreateEventData, CreateEventVariables, ListEventsData } from '../'; import { UseDataConnectQueryResult, useDataConnectQueryOptions, UseDataConnectMutationResult, useDataConnectMutationOptions} from '@tanstack-query-firebase/react/data-connect'; import { UseQueryResult, UseMutationResult} from '@tanstack/react-query'; import { DataConnect } from 'firebase/data-connect'; import { FirebaseError } from 'firebase/app'; -export function useCreateMovie(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -export function useCreateMovie(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; +export function useCreateEvent(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; +export function useCreateEvent(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -export function useUpsertUser(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -export function useUpsertUser(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; - -export function useAddReview(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -export function useAddReview(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; - -export function useDeleteReview(options?: useDataConnectMutationOptions): UseDataConnectMutationResult; -export function useDeleteReview(dc: DataConnect, options?: useDataConnectMutationOptions): UseDataConnectMutationResult; - -export function useListMovies(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -export function useListMovies(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; - -export function useListUsers(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -export function useListUsers(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; - -export function useListUserReviews(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -export function useListUserReviews(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; - -export function useGetMovieById(vars: GetMovieByIdVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -export function useGetMovieById(dc: DataConnect, vars: GetMovieByIdVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; - -export function useSearchMovie(vars?: SearchMovieVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; -export function useSearchMovie(dc: DataConnect, vars?: SearchMovieVariables, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; +export function useListEvents(options?: useDataConnectQueryOptions): UseDataConnectQueryResult; +export function useListEvents(dc: DataConnect, options?: useDataConnectQueryOptions): UseDataConnectQueryResult; diff --git a/frontend-web/src/dataconnect-generated/react/package.json b/frontend-web/src/dataconnect-generated/react/package.json index 33f923ed..512c7ec3 100644 --- a/frontend-web/src/dataconnect-generated/react/package.json +++ b/frontend-web/src/dataconnect-generated/react/package.json @@ -2,7 +2,7 @@ "name": "@dataconnect/generated-react", "version": "1.0.0", "author": "Firebase (https://firebase.google.com/)", - "description": "Generated SDK For example", + "description": "Generated SDK For krow-connector", "license": "Apache-2.0", "engines": { "node": " >=18.0" diff --git a/frontend-web/src/lib/firebaseConfig.js b/frontend-web/src/lib/firebaseConfig.js new file mode 100644 index 00000000..b73269da --- /dev/null +++ b/frontend-web/src/lib/firebaseConfig.js @@ -0,0 +1,22 @@ +import { getApps, initializeApp, getApp } from 'firebase/app'; +import { getDataConnect } from 'firebase/data-connect'; +import { getAuth } from 'firebase/auth'; +import { connectorConfig } from '@dataconnect/generated'; + +const firebaseConfig = { + apiKey: import.meta.env.VITE_FIREBASE_API_KEY, + authDomain: import.meta.env.VITE_FIREBASE_AUTH_DOMAIN, + projectId: import.meta.env.VITE_FIREBASE_PROJECT_ID, + appId: import.meta.env.VITE_FIREBASE_APP_ID, +}; + +export function getFirebaseApp() { + if (getApps().length === 0) { + return initializeApp(firebaseConfig); + } + return getApp(); +} + +export const app = getFirebaseApp(); +export const dataConnect = getDataConnect(app, connectorConfig); +export const auth = getAuth(app); \ No newline at end of file