Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
c952f00
chore: upgrade firebase to ^11.0.2
HassanBahati Nov 25, 2024
4dc0694
feat: initialize dataconnect
HassanBahati Nov 25, 2024
ec93489
feat; add useConnectQuery
HassanBahati Nov 25, 2024
afc37ab
_
HassanBahati Nov 25, 2024
2423396
chore: ignore firebase cache
HassanBahati Nov 25, 2024
42d1f78
chore: register dataconnect paths
HassanBahati Nov 25, 2024
2aa2bab
feat: setup dataconnect
HassanBahati Nov 25, 2024
64b8ca2
chore: rename app => firebaseApp
HassanBahati Nov 25, 2024
02a429a
tests(useConnectQuery): initialize firebase app
HassanBahati Nov 25, 2024
0dd6642
_
HassanBahati Nov 25, 2024
fc83176
test(useConnectQuery): test for successful data retrieval
HassanBahati Nov 26, 2024
ca32ab8
chore: add query client utils
HassanBahati Nov 26, 2024
1a97407
_
HassanBahati Nov 26, 2024
43cf421
chore: export data-connect hooks
HassanBahati Nov 26, 2024
8a4ea32
test(useConnectQuery): add tests
HassanBahati Nov 26, 2024
a174a92
feat(useConnectMutation): add useConnectMutation hook
HassanBahati Nov 27, 2024
91a7e9f
chore: export useConnectMutation
HassanBahati Nov 27, 2024
a1a3811
Merge branch 'next' into ft-add-useConnectQuery
HassanBahati Dec 6, 2024
068ba9e
chore(dataconnect): update sdk
HassanBahati Dec 7, 2024
d61f99b
feat(useConnectQuery): enable passing query options
HassanBahati Dec 7, 2024
d3ae0fc
feat(useConnectMutation): implement invalidate option
HassanBahati Dec 7, 2024
b25ac40
chore(useConnectQuery): add FirebaseError as default Error
HassanBahati Dec 7, 2024
6990076
chore: prefix default project name with demo-
HassanBahati Dec 15, 2024
4a6b315
fix: prefix @dataconnect/default-connector version with workspace:* t…
HassanBahati Dec 15, 2024
d7d3408
_
HassanBahati Dec 15, 2024
771da3c
feat(dataconnect): add upsert mutation
HassanBahati Dec 16, 2024
294cf5a
feat(dataconnect): add delete mutation
HassanBahati Dec 16, 2024
91e40c1
feat(dataconnect): add upsert and delete mutations
HassanBahati Dec 16, 2024
cfdf3da
test(useConnectMutation): add tests
HassanBahati Dec 16, 2024
aef9440
test(useConnectMutation): add tests
HassanBahati Dec 16, 2024
a33dcf7
fix: Allow queryKey to be optional
Ehesp Dec 16, 2024
2007da9
chore: add data-connect to exports map
HassanBahati Dec 16, 2024
1136e11
feat(dataconnect): add getMovieById query
HassanBahati Dec 16, 2024
e99b87f
test(useConnectQuery): add test for fetching data by unique identifier
HassanBahati Dec 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .firebaserc
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
{}
{
"projects": {
"default": "demo-project"
},
"targets": {},
"etags": {}
}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ dist

functions/lib/**/*.js
functions/lib/**/*.js.map

# Firebase cache
.firebase/
68 changes: 68 additions & 0 deletions dataconnect-sdk/js/default-connector/esm/index.esm.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import { getDataConnect, queryRef, executeQuery, mutationRef, executeMutation, validateArgs } from 'firebase/data-connect';

export const connectorConfig = {
connector: 'default',
service: 'tanstack-query-firebase',
location: 'us-central1'
};

export function listMoviesRef(dc) {
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return queryRef(dcInstance, 'ListMovies');
}
export function listMovies(dc) {
return executeQuery(listMoviesRef(dc));
}
export function getMovieByIdRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return queryRef(dcInstance, 'GetMovieById', inputVars);
}
export function getMovieById(dcOrVars, vars) {
return executeQuery(getMovieByIdRef(dcOrVars, vars));
}
export function createMovieRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return mutationRef(dcInstance, 'CreateMovie', inputVars);
}
export function createMovie(dcOrVars, vars) {
return executeMutation(createMovieRef(dcOrVars, vars));
}
export function upsertMovieRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return mutationRef(dcInstance, 'UpsertMovie', inputVars);
}
export function upsertMovie(dcOrVars, vars) {
return executeMutation(upsertMovieRef(dcOrVars, vars));
}
export function deleteMovieRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return mutationRef(dcInstance, 'DeleteMovie', inputVars);
}
export function deleteMovie(dcOrVars, vars) {
return executeMutation(deleteMovieRef(dcOrVars, vars));
}
1 change: 1 addition & 0 deletions dataconnect-sdk/js/default-connector/esm/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"module"}
79 changes: 79 additions & 0 deletions dataconnect-sdk/js/default-connector/index.cjs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
const { getDataConnect, queryRef, executeQuery, mutationRef, executeMutation, validateArgs } = require('firebase/data-connect');

const connectorConfig = {
connector: 'default',
service: 'tanstack-query-firebase',
location: 'us-central1'
};
exports.connectorConfig = connectorConfig;

function listMoviesRef(dc) {
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return queryRef(dcInstance, 'ListMovies');
}
exports.listMoviesRef = listMoviesRef;
exports.listMovies = function listMovies(dc) {
return executeQuery(listMoviesRef(dc));
};

function getMovieByIdRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return queryRef(dcInstance, 'GetMovieById', inputVars);
}
exports.getMovieByIdRef = getMovieByIdRef;
exports.getMovieById = function getMovieById(dcOrVars, vars) {
return executeQuery(getMovieByIdRef(dcOrVars, vars));
};

function createMovieRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return mutationRef(dcInstance, 'CreateMovie', inputVars);
}
exports.createMovieRef = createMovieRef;
exports.createMovie = function createMovie(dcOrVars, vars) {
return executeMutation(createMovieRef(dcOrVars, vars));
};

function upsertMovieRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return mutationRef(dcInstance, 'UpsertMovie', inputVars);
}
exports.upsertMovieRef = upsertMovieRef;
exports.upsertMovie = function upsertMovie(dcOrVars, vars) {
return executeMutation(upsertMovieRef(dcOrVars, vars));
};

function deleteMovieRef(dcOrVars, vars) {
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
if('_useGeneratedSdk' in dcInstance) {
dcInstance._useGeneratedSdk();
} else {
console.error('Please update to the latest version of the Data Connect SDK by running `npm install firebase@dataconnect-preview`.');
}
return mutationRef(dcInstance, 'DeleteMovie', inputVars);
}
exports.deleteMovieRef = deleteMovieRef;
exports.deleteMovie = function deleteMovie(dcOrVars, vars) {
return executeMutation(deleteMovieRef(dcOrVars, vars));
};

119 changes: 119 additions & 0 deletions dataconnect-sdk/js/default-connector/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
import { ConnectorConfig, DataConnect, QueryRef, QueryPromise, MutationRef, MutationPromise } from 'firebase/data-connect';
export const connectorConfig: ConnectorConfig;

export type TimestampString = string;

export type UUIDString = string;

export type Int64String = string;

export type DateString = string;



export interface CreateMovieData {
movie_insert: Movie_Key;
}

export interface CreateMovieVariables {
title: string;
genre: string;
imageUrl: string;
}

export interface DeleteMovieData {
movie_delete?: Movie_Key | null;
}

export interface DeleteMovieVariables {
id: UUIDString;
}

export interface GetMovieByIdData {
movie?: {
id: UUIDString;
title: string;
imageUrl: string;
genre?: string | null;
} & Movie_Key;
}

export interface GetMovieByIdVariables {
id: UUIDString;
}

export interface ListMoviesData {
movies: ({
id: UUIDString;
title: string;
imageUrl: string;
genre?: string | null;
} & Movie_Key)[];
}

export interface MovieMetadata_Key {
id: UUIDString;
__typename?: 'MovieMetadata_Key';
}

export interface Movie_Key {
id: UUIDString;
__typename?: 'Movie_Key';
}

export interface UpsertMovieData {
movie_upsert: Movie_Key;
}

export interface UpsertMovieVariables {
id: UUIDString;
title: string;
imageUrl: string;
}



/* Allow users to create refs without passing in DataConnect */
export function listMoviesRef(): QueryRef<ListMoviesData, undefined>;/* Allow users to pass in custom DataConnect instances */
export function listMoviesRef(dc: DataConnect): QueryRef<ListMoviesData,undefined>;

export function listMovies(): QueryPromise<ListMoviesData, undefined>;
export function listMovies(dc: DataConnect): QueryPromise<ListMoviesData,undefined>;


/* Allow users to create refs without passing in DataConnect */
export function getMovieByIdRef(vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData, GetMovieByIdVariables>;
/* Allow users to pass in custom DataConnect instances */
export function getMovieByIdRef(dc: DataConnect, vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData,GetMovieByIdVariables>;

export function getMovieById(vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
export function getMovieById(dc: DataConnect, vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData,GetMovieByIdVariables>;


/* Allow users to create refs without passing in DataConnect */
export function createMovieRef(vars: CreateMovieVariables): MutationRef<CreateMovieData, CreateMovieVariables>;
/* Allow users to pass in custom DataConnect instances */
export function createMovieRef(dc: DataConnect, vars: CreateMovieVariables): MutationRef<CreateMovieData,CreateMovieVariables>;

export function createMovie(vars: CreateMovieVariables): MutationPromise<CreateMovieData, CreateMovieVariables>;
export function createMovie(dc: DataConnect, vars: CreateMovieVariables): MutationPromise<CreateMovieData,CreateMovieVariables>;


/* Allow users to create refs without passing in DataConnect */
export function upsertMovieRef(vars: UpsertMovieVariables): MutationRef<UpsertMovieData, UpsertMovieVariables>;
/* Allow users to pass in custom DataConnect instances */
export function upsertMovieRef(dc: DataConnect, vars: UpsertMovieVariables): MutationRef<UpsertMovieData,UpsertMovieVariables>;

export function upsertMovie(vars: UpsertMovieVariables): MutationPromise<UpsertMovieData, UpsertMovieVariables>;
export function upsertMovie(dc: DataConnect, vars: UpsertMovieVariables): MutationPromise<UpsertMovieData,UpsertMovieVariables>;


/* Allow users to create refs without passing in DataConnect */
export function deleteMovieRef(vars: DeleteMovieVariables): MutationRef<DeleteMovieData, DeleteMovieVariables>;
/* Allow users to pass in custom DataConnect instances */
export function deleteMovieRef(dc: DataConnect, vars: DeleteMovieVariables): MutationRef<DeleteMovieData,DeleteMovieVariables>;

export function deleteMovie(vars: DeleteMovieVariables): MutationPromise<DeleteMovieData, DeleteMovieVariables>;
export function deleteMovie(dc: DataConnect, vars: DeleteMovieVariables): MutationPromise<DeleteMovieData,DeleteMovieVariables>;


25 changes: 25 additions & 0 deletions dataconnect-sdk/js/default-connector/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "@dataconnect/default-connector",
"version": "1.0.0",
"author": "Firebase <[email protected]> (https://firebase.google.com/)",
"description": "Generated SDK For default",
"license": "Apache-2.0",
"engines": {
"node": " >=18.0"
},
"typings": "index.d.ts",
"module": "esm/index.esm.js",
"main": "index.cjs.js",
"browser": "esm/index.esm.js",
"exports": {
".": {
"types": "./index.d.ts",
"require": "./index.cjs.js",
"default": "./esm/index.esm.js"
},
"./package.json": "./package.json"
},
"peerDependencies": {
"firebase": "^10.14.0 || ^11.0.0"
}
}
10 changes: 10 additions & 0 deletions dataconnect/.dataconnect/schema/main/implicit.gql
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
extend type MovieMetadata {
"""
✨ Implicit primary key field. It's a UUID column default to a generated new value. See `@table` for how to customize it.
"""
id: UUID! @default(expr: "uuidV4()") @fdc_generated(from: "MovieMetadata", purpose: IMPLICIT_KEY_FIELD)
"""
✨ Implicit foreign key field based on `MovieMetadata`.`movie`. It must match the value of `Movie`.`id`. See `@ref` for how to customize it.
"""
movieId: UUID! @fdc_generated(from: "MovieMetadata.movie", purpose: IMPLICIT_REF_FIELD)
}
Loading