@@ -1190,6 +1190,114 @@ describe('database', () => {
1190
1190
] )
1191
1191
} )
1192
1192
1193
+ it ( 'should find distinct values with field nested to a 2x relationship' , async ( ) => {
1194
+ await payload . delete ( { collection : 'posts' , where : { } } )
1195
+ await payload . delete ( { collection : 'categories' , where : { } } )
1196
+ await payload . delete ( { collection : 'simple' , where : { } } )
1197
+
1198
+ const simple_1 = await payload . create ( { collection : 'simple' , data : { text : 'simple_1' } } )
1199
+ const simple_2 = await payload . create ( { collection : 'simple' , data : { text : 'simple_2' } } )
1200
+ const simple_3 = await payload . create ( { collection : 'simple' , data : { text : 'simple_3' } } )
1201
+
1202
+ const category_1 = await payload . create ( {
1203
+ collection : 'categories' ,
1204
+ data : { title : 'category_1' , simple : simple_1 } ,
1205
+ } )
1206
+ const category_2 = await payload . create ( {
1207
+ collection : 'categories' ,
1208
+ data : { title : 'category_2' , simple : simple_2 } ,
1209
+ } )
1210
+ const category_3 = await payload . create ( {
1211
+ collection : 'categories' ,
1212
+ data : { title : 'category_3' , simple : simple_3 } ,
1213
+ } )
1214
+ const category_4 = await payload . create ( {
1215
+ collection : 'categories' ,
1216
+ data : { title : 'category_4' , simple : simple_3 } ,
1217
+ } )
1218
+
1219
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_1 } } )
1220
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_2 } } )
1221
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_2 } } )
1222
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_2 } } )
1223
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1224
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1225
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1226
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1227
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_4 } } )
1228
+
1229
+ const res = await payload . findDistinct ( {
1230
+ collection : 'posts' ,
1231
+ field : 'category.simple.text' ,
1232
+ } )
1233
+
1234
+ expect ( res . values ) . toEqual ( [
1235
+ {
1236
+ 'category.simple.text' : 'simple_1' ,
1237
+ } ,
1238
+ {
1239
+ 'category.simple.text' : 'simple_2' ,
1240
+ } ,
1241
+ {
1242
+ 'category.simple.text' : 'simple_3' ,
1243
+ } ,
1244
+ ] )
1245
+ } )
1246
+
1247
+ it ( 'should find distinct values with virtual field linked to a 2x relationship' , async ( ) => {
1248
+ await payload . delete ( { collection : 'posts' , where : { } } )
1249
+ await payload . delete ( { collection : 'categories' , where : { } } )
1250
+ await payload . delete ( { collection : 'simple' , where : { } } )
1251
+
1252
+ const simple_1 = await payload . create ( { collection : 'simple' , data : { text : 'simple_1' } } )
1253
+ const simple_2 = await payload . create ( { collection : 'simple' , data : { text : 'simple_2' } } )
1254
+ const simple_3 = await payload . create ( { collection : 'simple' , data : { text : 'simple_3' } } )
1255
+
1256
+ const category_1 = await payload . create ( {
1257
+ collection : 'categories' ,
1258
+ data : { title : 'category_1' , simple : simple_1 } ,
1259
+ } )
1260
+ const category_2 = await payload . create ( {
1261
+ collection : 'categories' ,
1262
+ data : { title : 'category_2' , simple : simple_2 } ,
1263
+ } )
1264
+ const category_3 = await payload . create ( {
1265
+ collection : 'categories' ,
1266
+ data : { title : 'category_3' , simple : simple_3 } ,
1267
+ } )
1268
+ const category_4 = await payload . create ( {
1269
+ collection : 'categories' ,
1270
+ data : { title : 'category_4' , simple : simple_3 } ,
1271
+ } )
1272
+
1273
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_1 } } )
1274
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_2 } } )
1275
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_2 } } )
1276
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_2 } } )
1277
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1278
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1279
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1280
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_3 } } )
1281
+ await payload . create ( { collection : 'posts' , data : { title : 'post' , category : category_4 } } )
1282
+
1283
+ const res = await payload . findDistinct ( {
1284
+ collection : 'posts' ,
1285
+ field : 'categorySimpleText' ,
1286
+ } )
1287
+
1288
+ expect ( res . values ) . toEqual ( [
1289
+ {
1290
+ categorySimpleText : 'simple_1' ,
1291
+ } ,
1292
+ {
1293
+ categorySimpleText : 'simple_2' ,
1294
+ } ,
1295
+ {
1296
+ categorySimpleText : 'simple_3' ,
1297
+ } ,
1298
+ ] )
1299
+ } )
1300
+
1193
1301
describe ( 'Compound Indexes' , ( ) => {
1194
1302
beforeEach ( async ( ) => {
1195
1303
await payload . delete ( { collection : 'compound-indexes' , where : { } } )
0 commit comments