Skip to content

Commit e269caa

Browse files
authored
Merge pull request #129 from HassanBahati/ft-add-useConnectQuery
feat: add useConnectQuery and useConnectMutation
2 parents b424dd1 + e99b87f commit e269caa

34 files changed

+6174
-1710
lines changed

.firebaserc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
{}
1+
{
2+
"projects": {
3+
"default": "demo-project"
4+
},
5+
"targets": {},
6+
"etags": {}
7+
}

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,6 @@ dist
1010

1111
functions/lib/**/*.js
1212
functions/lib/**/*.js.map
13+
14+
# Firebase cache
15+
.firebase/
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import { getDataConnect, queryRef, executeQuery, mutationRef, executeMutation, validateArgs } from 'firebase/data-connect';
2+
3+
export const connectorConfig = {
4+
connector: 'default',
5+
service: 'tanstack-query-firebase',
6+
location: 'us-central1'
7+
};
8+
9+
export function listMoviesRef(dc) {
10+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
11+
if('_useGeneratedSdk' in dcInstance) {
12+
dcInstance._useGeneratedSdk();
13+
} else {
14+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
15+
}
16+
return queryRef(dcInstance, 'ListMovies');
17+
}
18+
export function listMovies(dc) {
19+
return executeQuery(listMoviesRef(dc));
20+
}
21+
export function getMovieByIdRef(dcOrVars, vars) {
22+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
23+
if('_useGeneratedSdk' in dcInstance) {
24+
dcInstance._useGeneratedSdk();
25+
} else {
26+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
27+
}
28+
return queryRef(dcInstance, 'GetMovieById', inputVars);
29+
}
30+
export function getMovieById(dcOrVars, vars) {
31+
return executeQuery(getMovieByIdRef(dcOrVars, vars));
32+
}
33+
export function createMovieRef(dcOrVars, vars) {
34+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
35+
if('_useGeneratedSdk' in dcInstance) {
36+
dcInstance._useGeneratedSdk();
37+
} else {
38+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
39+
}
40+
return mutationRef(dcInstance, 'CreateMovie', inputVars);
41+
}
42+
export function createMovie(dcOrVars, vars) {
43+
return executeMutation(createMovieRef(dcOrVars, vars));
44+
}
45+
export function upsertMovieRef(dcOrVars, vars) {
46+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
47+
if('_useGeneratedSdk' in dcInstance) {
48+
dcInstance._useGeneratedSdk();
49+
} else {
50+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
51+
}
52+
return mutationRef(dcInstance, 'UpsertMovie', inputVars);
53+
}
54+
export function upsertMovie(dcOrVars, vars) {
55+
return executeMutation(upsertMovieRef(dcOrVars, vars));
56+
}
57+
export function deleteMovieRef(dcOrVars, vars) {
58+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
59+
if('_useGeneratedSdk' in dcInstance) {
60+
dcInstance._useGeneratedSdk();
61+
} else {
62+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
63+
}
64+
return mutationRef(dcInstance, 'DeleteMovie', inputVars);
65+
}
66+
export function deleteMovie(dcOrVars, vars) {
67+
return executeMutation(deleteMovieRef(dcOrVars, vars));
68+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"type":"module"}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
const { getDataConnect, queryRef, executeQuery, mutationRef, executeMutation, validateArgs } = require('firebase/data-connect');
2+
3+
const connectorConfig = {
4+
connector: 'default',
5+
service: 'tanstack-query-firebase',
6+
location: 'us-central1'
7+
};
8+
exports.connectorConfig = connectorConfig;
9+
10+
function listMoviesRef(dc) {
11+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
12+
if('_useGeneratedSdk' in dcInstance) {
13+
dcInstance._useGeneratedSdk();
14+
} else {
15+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
16+
}
17+
return queryRef(dcInstance, 'ListMovies');
18+
}
19+
exports.listMoviesRef = listMoviesRef;
20+
exports.listMovies = function listMovies(dc) {
21+
return executeQuery(listMoviesRef(dc));
22+
};
23+
24+
function getMovieByIdRef(dcOrVars, vars) {
25+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
26+
if('_useGeneratedSdk' in dcInstance) {
27+
dcInstance._useGeneratedSdk();
28+
} else {
29+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
30+
}
31+
return queryRef(dcInstance, 'GetMovieById', inputVars);
32+
}
33+
exports.getMovieByIdRef = getMovieByIdRef;
34+
exports.getMovieById = function getMovieById(dcOrVars, vars) {
35+
return executeQuery(getMovieByIdRef(dcOrVars, vars));
36+
};
37+
38+
function createMovieRef(dcOrVars, vars) {
39+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
40+
if('_useGeneratedSdk' in dcInstance) {
41+
dcInstance._useGeneratedSdk();
42+
} else {
43+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
44+
}
45+
return mutationRef(dcInstance, 'CreateMovie', inputVars);
46+
}
47+
exports.createMovieRef = createMovieRef;
48+
exports.createMovie = function createMovie(dcOrVars, vars) {
49+
return executeMutation(createMovieRef(dcOrVars, vars));
50+
};
51+
52+
function upsertMovieRef(dcOrVars, vars) {
53+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
54+
if('_useGeneratedSdk' in dcInstance) {
55+
dcInstance._useGeneratedSdk();
56+
} else {
57+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
58+
}
59+
return mutationRef(dcInstance, 'UpsertMovie', inputVars);
60+
}
61+
exports.upsertMovieRef = upsertMovieRef;
62+
exports.upsertMovie = function upsertMovie(dcOrVars, vars) {
63+
return executeMutation(upsertMovieRef(dcOrVars, vars));
64+
};
65+
66+
function deleteMovieRef(dcOrVars, vars) {
67+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
68+
if('_useGeneratedSdk' in dcInstance) {
69+
dcInstance._useGeneratedSdk();
70+
} else {
71+
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
72+
}
73+
return mutationRef(dcInstance, 'DeleteMovie', inputVars);
74+
}
75+
exports.deleteMovieRef = deleteMovieRef;
76+
exports.deleteMovie = function deleteMovie(dcOrVars, vars) {
77+
return executeMutation(deleteMovieRef(dcOrVars, vars));
78+
};
79+
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
import { ConnectorConfig, DataConnect, QueryRef, QueryPromise, MutationRef, MutationPromise } from 'firebase/data-connect';
2+
export const connectorConfig: ConnectorConfig;
3+
4+
export type TimestampString = string;
5+
6+
export type UUIDString = string;
7+
8+
export type Int64String = string;
9+
10+
export type DateString = string;
11+
12+
13+
14+
export interface CreateMovieData {
15+
movie_insert: Movie_Key;
16+
}
17+
18+
export interface CreateMovieVariables {
19+
title: string;
20+
genre: string;
21+
imageUrl: string;
22+
}
23+
24+
export interface DeleteMovieData {
25+
movie_delete?: Movie_Key | null;
26+
}
27+
28+
export interface DeleteMovieVariables {
29+
id: UUIDString;
30+
}
31+
32+
export interface GetMovieByIdData {
33+
movie?: {
34+
id: UUIDString;
35+
title: string;
36+
imageUrl: string;
37+
genre?: string | null;
38+
} & Movie_Key;
39+
}
40+
41+
export interface GetMovieByIdVariables {
42+
id: UUIDString;
43+
}
44+
45+
export interface ListMoviesData {
46+
movies: ({
47+
id: UUIDString;
48+
title: string;
49+
imageUrl: string;
50+
genre?: string | null;
51+
} & Movie_Key)[];
52+
}
53+
54+
export interface MovieMetadata_Key {
55+
id: UUIDString;
56+
__typename?: 'MovieMetadata_Key';
57+
}
58+
59+
export interface Movie_Key {
60+
id: UUIDString;
61+
__typename?: 'Movie_Key';
62+
}
63+
64+
export interface UpsertMovieData {
65+
movie_upsert: Movie_Key;
66+
}
67+
68+
export interface UpsertMovieVariables {
69+
id: UUIDString;
70+
title: string;
71+
imageUrl: string;
72+
}
73+
74+
75+
76+
/* Allow users to create refs without passing in DataConnect */
77+
export function listMoviesRef(): QueryRef<ListMoviesData, undefined>;/* Allow users to pass in custom DataConnect instances */
78+
export function listMoviesRef(dc: DataConnect): QueryRef<ListMoviesData,undefined>;
79+
80+
export function listMovies(): QueryPromise<ListMoviesData, undefined>;
81+
export function listMovies(dc: DataConnect): QueryPromise<ListMoviesData,undefined>;
82+
83+
84+
/* Allow users to create refs without passing in DataConnect */
85+
export function getMovieByIdRef(vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData, GetMovieByIdVariables>;
86+
/* Allow users to pass in custom DataConnect instances */
87+
export function getMovieByIdRef(dc: DataConnect, vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData,GetMovieByIdVariables>;
88+
89+
export function getMovieById(vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
90+
export function getMovieById(dc: DataConnect, vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData,GetMovieByIdVariables>;
91+
92+
93+
/* Allow users to create refs without passing in DataConnect */
94+
export function createMovieRef(vars: CreateMovieVariables): MutationRef<CreateMovieData, CreateMovieVariables>;
95+
/* Allow users to pass in custom DataConnect instances */
96+
export function createMovieRef(dc: DataConnect, vars: CreateMovieVariables): MutationRef<CreateMovieData,CreateMovieVariables>;
97+
98+
export function createMovie(vars: CreateMovieVariables): MutationPromise<CreateMovieData, CreateMovieVariables>;
99+
export function createMovie(dc: DataConnect, vars: CreateMovieVariables): MutationPromise<CreateMovieData,CreateMovieVariables>;
100+
101+
102+
/* Allow users to create refs without passing in DataConnect */
103+
export function upsertMovieRef(vars: UpsertMovieVariables): MutationRef<UpsertMovieData, UpsertMovieVariables>;
104+
/* Allow users to pass in custom DataConnect instances */
105+
export function upsertMovieRef(dc: DataConnect, vars: UpsertMovieVariables): MutationRef<UpsertMovieData,UpsertMovieVariables>;
106+
107+
export function upsertMovie(vars: UpsertMovieVariables): MutationPromise<UpsertMovieData, UpsertMovieVariables>;
108+
export function upsertMovie(dc: DataConnect, vars: UpsertMovieVariables): MutationPromise<UpsertMovieData,UpsertMovieVariables>;
109+
110+
111+
/* Allow users to create refs without passing in DataConnect */
112+
export function deleteMovieRef(vars: DeleteMovieVariables): MutationRef<DeleteMovieData, DeleteMovieVariables>;
113+
/* Allow users to pass in custom DataConnect instances */
114+
export function deleteMovieRef(dc: DataConnect, vars: DeleteMovieVariables): MutationRef<DeleteMovieData,DeleteMovieVariables>;
115+
116+
export function deleteMovie(vars: DeleteMovieVariables): MutationPromise<DeleteMovieData, DeleteMovieVariables>;
117+
export function deleteMovie(dc: DataConnect, vars: DeleteMovieVariables): MutationPromise<DeleteMovieData,DeleteMovieVariables>;
118+
119+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"name": "@dataconnect/default-connector",
3+
"version": "1.0.0",
4+
"author": "Firebase <[email protected]> (https://firebase.google.com/)",
5+
"description": "Generated SDK For default",
6+
"license": "Apache-2.0",
7+
"engines": {
8+
"node": " >=18.0"
9+
},
10+
"typings": "index.d.ts",
11+
"module": "esm/index.esm.js",
12+
"main": "index.cjs.js",
13+
"browser": "esm/index.esm.js",
14+
"exports": {
15+
".": {
16+
"types": "./index.d.ts",
17+
"require": "./index.cjs.js",
18+
"default": "./esm/index.esm.js"
19+
},
20+
"./package.json": "./package.json"
21+
},
22+
"peerDependencies": {
23+
"firebase": "^10.14.0 || ^11.0.0"
24+
}
25+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extend type MovieMetadata {
2+
"""
3+
✨ Implicit primary key field. It's a UUID column default to a generated new value. See `@table` for how to customize it.
4+
"""
5+
id: UUID! @default(expr: "uuidV4()") @fdc_generated(from: "MovieMetadata", purpose: IMPLICIT_KEY_FIELD)
6+
"""
7+
✨ Implicit foreign key field based on `MovieMetadata`.`movie`. It must match the value of `Movie`.`id`. See `@ref` for how to customize it.
8+
"""
9+
movieId: UUID! @fdc_generated(from: "MovieMetadata.movie", purpose: IMPLICIT_REF_FIELD)
10+
}

0 commit comments

Comments
 (0)