Skip to content

Commit 0feb40a

Browse files
maneeshtEhespHassanBahati
authored
feat(fdc)!: breaking change - Introduce dataConnectResult field to provide fields that were overridden when spreading data (#172)
* Fixed autocomplete * Added tsup configuration * Added tsconfig.json * WIP * First pass at angular query * Fixed auto-reload queries * second run-through of tanstack query * Added comments * Added tracking to fdc * Removed angular changes * Upped the required version of firebase * updated to use 11.3.0 * Used correct enums * reverted prelude changes * Removed only * completed first pass * First pass at angular framework * Fixed typings * Added tracking * Fixed testing workflow * Fixed more tests * Addressed comments * Fixed react tests * Added firebase files * Added custom injector * Moved firebase files outside of individual folders * Wrote script to copy package.json * Added missing file * Brought back dataconnect-sdk in workspace * removed unnecessary js files * Updated to use workspaces * Fix wrong reporting * Fix runner * Fix reading of logs * Fix angular test * Miscellaneous cleanup * Fixed lockfile * chore: Linting fixes * chore: Update release flow * chore: Build flow * Moved dataconnect to dev deps * Updated lock file * Updated package.json to include build scripts * Update packages/angular/package.json Co-authored-by: Hassan Bahati <[email protected]> * chore: Simplify build flow * Revert "chore: Simplify build flow" This reverts commit c348aa4. * Fixed generation and updated README * Removed peer dependency on firebase * Updated lockfile * Removed copyToBuild file * Added error log * Addressed comments * Updated biome formatting * Moved tanstack to peer dependency * First pass at including resultmeta * Fixed all tests etc. * Wrote tests for resultMeta * Cleaned up types * Removed TODO * Added types * WIP * WIP * Updated signatures to allow for dataConnectResult * Rename types * Addressed concerns --------- Co-authored-by: Elliot Hesp <[email protected]> Co-authored-by: Hassan Bahati <[email protected]>
1 parent 88c956e commit 0feb40a

18 files changed

+869
-402
lines changed

dataconnect-sdk/js/default-connector/README.md

+317-44
Large diffs are not rendered by default.

dataconnect-sdk/js/default-connector/esm/index.esm.js

+35-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const connectorConfig = {
77
};
88

99
export function createMovieRef(dcOrVars, vars) {
10-
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
10+
const { dc: dcInstance, vars: inputVars } = validateArgs(connectorConfig, dcOrVars, vars, true);
1111
dcInstance._useGeneratedSdk();
1212
return mutationRef(dcInstance, 'CreateMovie', inputVars);
1313
}
@@ -17,7 +17,7 @@ export function createMovie(dcOrVars, vars) {
1717
}
1818

1919
export function upsertMovieRef(dcOrVars, vars) {
20-
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
20+
const { dc: dcInstance, vars: inputVars } = validateArgs(connectorConfig, dcOrVars, vars, true);
2121
dcInstance._useGeneratedSdk();
2222
return mutationRef(dcInstance, 'UpsertMovie', inputVars);
2323
}
@@ -27,7 +27,7 @@ export function upsertMovie(dcOrVars, vars) {
2727
}
2828

2929
export function deleteMovieRef(dcOrVars, vars) {
30-
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
30+
const { dc: dcInstance, vars: inputVars } = validateArgs(connectorConfig, dcOrVars, vars, true);
3131
dcInstance._useGeneratedSdk();
3232
return mutationRef(dcInstance, 'DeleteMovie', inputVars);
3333
}
@@ -36,8 +36,28 @@ export function deleteMovie(dcOrVars, vars) {
3636
return executeMutation(deleteMovieRef(dcOrVars, vars));
3737
}
3838

39+
export function addMetaRef(dc) {
40+
const { dc: dcInstance } = validateArgs(connectorConfig, dc, undefined);
41+
dcInstance._useGeneratedSdk();
42+
return mutationRef(dcInstance, 'AddMeta');
43+
}
44+
45+
export function addMeta(dc) {
46+
return executeMutation(addMetaRef(dc));
47+
}
48+
49+
export function deleteMetaRef(dcOrVars, vars) {
50+
const { dc: dcInstance, vars: inputVars } = validateArgs(connectorConfig, dcOrVars, vars, true);
51+
dcInstance._useGeneratedSdk();
52+
return mutationRef(dcInstance, 'DeleteMeta', inputVars);
53+
}
54+
55+
export function deleteMeta(dcOrVars, vars) {
56+
return executeMutation(deleteMetaRef(dcOrVars, vars));
57+
}
58+
3959
export function listMoviesRef(dc) {
40-
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
60+
const { dc: dcInstance } = validateArgs(connectorConfig, dc, undefined);
4161
dcInstance._useGeneratedSdk();
4262
return queryRef(dcInstance, 'ListMovies');
4363
}
@@ -47,7 +67,7 @@ export function listMovies(dc) {
4767
}
4868

4969
export function getMovieByIdRef(dcOrVars, vars) {
50-
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
70+
const { dc: dcInstance, vars: inputVars } = validateArgs(connectorConfig, dcOrVars, vars, true);
5171
dcInstance._useGeneratedSdk();
5272
return queryRef(dcInstance, 'GetMovieById', inputVars);
5373
}
@@ -56,3 +76,13 @@ export function getMovieById(dcOrVars, vars) {
5676
return executeQuery(getMovieByIdRef(dcOrVars, vars));
5777
}
5878

79+
export function getMetaRef(dc) {
80+
const { dc: dcInstance } = validateArgs(connectorConfig, dc, undefined);
81+
dcInstance._useGeneratedSdk();
82+
return queryRef(dcInstance, 'GetMeta');
83+
}
84+
85+
export function getMeta(dc) {
86+
return executeQuery(getMetaRef(dc));
87+
}
88+

dataconnect-sdk/js/default-connector/index.cjs.js

+24-5
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ exports.createMovieRef = function createMovieRef(dcOrVars, vars) {
1212
dcInstance._useGeneratedSdk();
1313
return mutationRef(dcInstance, 'CreateMovie', inputVars);
1414
}
15-
1615
exports.createMovie = function createMovie(dcOrVars, vars) {
1716
return executeMutation(createMovieRef(dcOrVars, vars));
1817
};
@@ -21,7 +20,6 @@ exports.upsertMovieRef = function upsertMovieRef(dcOrVars, vars) {
2120
dcInstance._useGeneratedSdk();
2221
return mutationRef(dcInstance, 'UpsertMovie', inputVars);
2322
}
24-
2523
exports.upsertMovie = function upsertMovie(dcOrVars, vars) {
2624
return executeMutation(upsertMovieRef(dcOrVars, vars));
2725
};
@@ -30,16 +28,30 @@ exports.deleteMovieRef = function deleteMovieRef(dcOrVars, vars) {
3028
dcInstance._useGeneratedSdk();
3129
return mutationRef(dcInstance, 'DeleteMovie', inputVars);
3230
}
33-
3431
exports.deleteMovie = function deleteMovie(dcOrVars, vars) {
3532
return executeMutation(deleteMovieRef(dcOrVars, vars));
3633
};
34+
exports.addMetaRef = function addMetaRef(dc) {
35+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
36+
dcInstance._useGeneratedSdk();
37+
return mutationRef(dcInstance, 'AddMeta');
38+
}
39+
exports.addMeta = function addMeta(dc) {
40+
return executeMutation(addMetaRef(dc));
41+
};
42+
exports.deleteMetaRef = function deleteMetaRef(dcOrVars, vars) {
43+
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
44+
dcInstance._useGeneratedSdk();
45+
return mutationRef(dcInstance, 'DeleteMeta', inputVars);
46+
}
47+
exports.deleteMeta = function deleteMeta(dcOrVars, vars) {
48+
return executeMutation(deleteMetaRef(dcOrVars, vars));
49+
};
3750
exports.listMoviesRef = function listMoviesRef(dc) {
3851
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
3952
dcInstance._useGeneratedSdk();
4053
return queryRef(dcInstance, 'ListMovies');
4154
}
42-
4355
exports.listMovies = function listMovies(dc) {
4456
return executeQuery(listMoviesRef(dc));
4557
};
@@ -48,7 +60,14 @@ exports.getMovieByIdRef = function getMovieByIdRef(dcOrVars, vars) {
4860
dcInstance._useGeneratedSdk();
4961
return queryRef(dcInstance, 'GetMovieById', inputVars);
5062
}
51-
5263
exports.getMovieById = function getMovieById(dcOrVars, vars) {
5364
return executeQuery(getMovieByIdRef(dcOrVars, vars));
5465
};
66+
exports.getMetaRef = function getMetaRef(dc) {
67+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
68+
dcInstance._useGeneratedSdk();
69+
return queryRef(dcInstance, 'GetMeta');
70+
}
71+
exports.getMeta = function getMeta(dc) {
72+
return executeQuery(getMetaRef(dc));
73+
};

dataconnect-sdk/js/default-connector/index.d.ts

+46-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ export type Int64String = string;
88
export type DateString = string;
99

1010

11+
export interface AddMetaData {
12+
ref: Meta_Key;
13+
}
14+
1115
export interface CreateMovieData {
1216
movie_insert: Movie_Key;
1317
}
@@ -18,6 +22,14 @@ export interface CreateMovieVariables {
1822
imageUrl: string;
1923
}
2024

25+
export interface DeleteMetaData {
26+
ref?: Meta_Key | null;
27+
}
28+
29+
export interface DeleteMetaVariables {
30+
id: UUIDString;
31+
}
32+
2133
export interface DeleteMovieData {
2234
movie_delete?: Movie_Key | null;
2335
}
@@ -26,6 +38,12 @@ export interface DeleteMovieVariables {
2638
id: UUIDString;
2739
}
2840

41+
export interface GetMetaData {
42+
ref: ({
43+
id: UUIDString;
44+
} & Meta_Key)[];
45+
}
46+
2947
export interface GetMovieByIdData {
3048
movie?: {
3149
id: UUIDString;
@@ -48,6 +66,11 @@ export interface ListMoviesData {
4866
} & Movie_Key)[];
4967
}
5068

69+
export interface Meta_Key {
70+
id: UUIDString;
71+
__typename?: 'Meta_Key';
72+
}
73+
5174
export interface MovieMetadata_Key {
5275
id: UUIDString;
5376
__typename?: 'MovieMetadata_Key';
@@ -68,7 +91,6 @@ export interface UpsertMovieVariables {
6891
imageUrl: string;
6992
}
7093

71-
7294
/* Allow users to create refs without passing in DataConnect */
7395
export function createMovieRef(vars: CreateMovieVariables): MutationRef<CreateMovieData, CreateMovieVariables>;
7496
/* Allow users to pass in custom DataConnect instances */
@@ -77,7 +99,6 @@ export function createMovieRef(dc: DataConnect, vars: CreateMovieVariables): Mut
7799
export function createMovie(vars: CreateMovieVariables): MutationPromise<CreateMovieData, CreateMovieVariables>;
78100
export function createMovie(dc: DataConnect, vars: CreateMovieVariables): MutationPromise<CreateMovieData, CreateMovieVariables>;
79101

80-
81102
/* Allow users to create refs without passing in DataConnect */
82103
export function upsertMovieRef(vars: UpsertMovieVariables): MutationRef<UpsertMovieData, UpsertMovieVariables>;
83104
/* Allow users to pass in custom DataConnect instances */
@@ -86,7 +107,6 @@ export function upsertMovieRef(dc: DataConnect, vars: UpsertMovieVariables): Mut
86107
export function upsertMovie(vars: UpsertMovieVariables): MutationPromise<UpsertMovieData, UpsertMovieVariables>;
87108
export function upsertMovie(dc: DataConnect, vars: UpsertMovieVariables): MutationPromise<UpsertMovieData, UpsertMovieVariables>;
88109

89-
90110
/* Allow users to create refs without passing in DataConnect */
91111
export function deleteMovieRef(vars: DeleteMovieVariables): MutationRef<DeleteMovieData, DeleteMovieVariables>;
92112
/* Allow users to pass in custom DataConnect instances */
@@ -95,6 +115,21 @@ export function deleteMovieRef(dc: DataConnect, vars: DeleteMovieVariables): Mut
95115
export function deleteMovie(vars: DeleteMovieVariables): MutationPromise<DeleteMovieData, DeleteMovieVariables>;
96116
export function deleteMovie(dc: DataConnect, vars: DeleteMovieVariables): MutationPromise<DeleteMovieData, DeleteMovieVariables>;
97117

118+
/* Allow users to create refs without passing in DataConnect */
119+
export function addMetaRef(): MutationRef<AddMetaData, undefined>;
120+
/* Allow users to pass in custom DataConnect instances */
121+
export function addMetaRef(dc: DataConnect): MutationRef<AddMetaData, undefined>;
122+
123+
export function addMeta(): MutationPromise<AddMetaData, undefined>;
124+
export function addMeta(dc: DataConnect): MutationPromise<AddMetaData, undefined>;
125+
126+
/* Allow users to create refs without passing in DataConnect */
127+
export function deleteMetaRef(vars: DeleteMetaVariables): MutationRef<DeleteMetaData, DeleteMetaVariables>;
128+
/* Allow users to pass in custom DataConnect instances */
129+
export function deleteMetaRef(dc: DataConnect, vars: DeleteMetaVariables): MutationRef<DeleteMetaData, DeleteMetaVariables>;
130+
131+
export function deleteMeta(vars: DeleteMetaVariables): MutationPromise<DeleteMetaData, DeleteMetaVariables>;
132+
export function deleteMeta(dc: DataConnect, vars: DeleteMetaVariables): MutationPromise<DeleteMetaData, DeleteMetaVariables>;
98133

99134
/* Allow users to create refs without passing in DataConnect */
100135
export function listMoviesRef(): QueryRef<ListMoviesData, undefined>;
@@ -104,7 +139,6 @@ export function listMoviesRef(dc: DataConnect): QueryRef<ListMoviesData, undefin
104139
export function listMovies(): QueryPromise<ListMoviesData, undefined>;
105140
export function listMovies(dc: DataConnect): QueryPromise<ListMoviesData, undefined>;
106141

107-
108142
/* Allow users to create refs without passing in DataConnect */
109143
export function getMovieByIdRef(vars: GetMovieByIdVariables): QueryRef<GetMovieByIdData, GetMovieByIdVariables>;
110144
/* Allow users to pass in custom DataConnect instances */
@@ -113,3 +147,11 @@ export function getMovieByIdRef(dc: DataConnect, vars: GetMovieByIdVariables): Q
113147
export function getMovieById(vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
114148
export function getMovieById(dc: DataConnect, vars: GetMovieByIdVariables): QueryPromise<GetMovieByIdData, GetMovieByIdVariables>;
115149

150+
/* Allow users to create refs without passing in DataConnect */
151+
export function getMetaRef(): QueryRef<GetMetaData, undefined>;
152+
/* Allow users to pass in custom DataConnect instances */
153+
export function getMetaRef(dc: DataConnect): QueryRef<GetMetaData, undefined>;
154+
155+
export function getMeta(): QueryPromise<GetMetaData, undefined>;
156+
export function getMeta(dc: DataConnect): QueryPromise<GetMetaData, undefined>;
157+

dataconnect/connector/connector.yaml

-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@ generate:
33
javascriptSdk:
44
outputDir: ../../dataconnect-sdk/js/default-connector
55
package: "@dataconnect/default-connector"
6-
packageJsonDir: ../..

dataconnect/connector/mutations.gql

+9
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ mutation DeleteMovie($id: UUID!) @auth(level: PUBLIC) {
1717
movie_delete(id: $id)
1818
}
1919

20+
mutation AddMeta @auth(level: PUBLIC) {
21+
ref: meta_insert(data: {
22+
ref: ""
23+
})
24+
}
25+
mutation DeleteMeta($id: UUID!) @auth(level: PUBLIC) {
26+
ref: meta_delete(id: $id)
27+
}
28+
2029
# # Upsert (update or insert) a user's username based on their auth.uid
2130
# mutation UpsertUser($username: String!) @auth(level: USER) {
2231
# user_upsert(

dataconnect/connector/queries.gql

+6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ query GetMovieById($id: UUID!) @auth(level: PUBLIC) {
2121
}
2222
}
2323

24+
query GetMeta @auth(level: PUBLIC) {
25+
ref: metas {
26+
id
27+
}
28+
}
29+
2430
# # List all users, only admins should be able to list all users, so we use NO_ACCESS
2531
# query ListUsers @auth(level: NO_ACCESS) {
2632
# users { id, username }

dataconnect/schema/schema.gql

+4
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ type MovieMetadata @table {
3434
description: String
3535
}
3636

37+
type Meta @table {
38+
ref: String!
39+
}
40+
3741
# # Reviews
3842
# type Review @table(name: "Reviews", key: ["movie", "user"]) {
3943
# id: UUID! @default(expr: "uuidV4()")

0 commit comments

Comments
 (0)