@@ -44,13 +44,25 @@ export default () =>
4444 title : true ,
4545 oldestdate : true ,
4646 pages : true ,
47+ price : true ,
4748 } ,
4849 where : {
4950 publicationcode,
5051 issuenumber,
5152 } ,
5253 } ) ;
53- const entries = await prismaCoa . inducks_entry . findMany ( {
54+ const publishers = (
55+ await prismaCoa . inducks_publishingjob . findMany ( {
56+ select : {
57+ issuecode : true ,
58+ publisherid : true ,
59+ } ,
60+ where : {
61+ issuecode : issue . issuecode ,
62+ } ,
63+ } )
64+ ) . groupBy ( "issuecode" , "publisherid[]" ) ;
65+ const entriesList = await prismaCoa . inducks_entry . findMany ( {
5466 select : {
5567 entrycode : true ,
5668 storyversioncode : true ,
@@ -60,16 +72,14 @@ export default () =>
6072 issuecode : issue . issuecode ,
6173 } ,
6274 } ) ;
63- const storyversioncodes = entries
75+ const storyversioncodes = entriesList
6476 . map ( ( entry ) => entry . storyversioncode )
6577 . filter (
66- (
67- storyversioncode ,
68- ) : storyversioncode is string =>
78+ ( storyversioncode ) : storyversioncode is string =>
6979 storyversioncode !== null ,
7080 ) ;
71- const storyversions =
72- ( await prismaCoa . inducks_storyversion . findMany ( {
81+ const storyversions = (
82+ await prismaCoa . inducks_storyversion . findMany ( {
7383 select : {
7484 storyversioncode : true ,
7585 storycode : true ,
@@ -80,8 +90,10 @@ export default () =>
8090 in : storyversioncodes ,
8191 } ,
8292 } ,
83- } ) ) . groupBy ( 'storyversioncode' ) ;
84- const storyversionjobs = ( await prismaCoa . inducks_storyjob . findMany ( {
93+ } )
94+ ) . groupBy ( "storyversioncode" ) ;
95+ const storyversionjobs = (
96+ await prismaCoa . inducks_storyjob . findMany ( {
8597 select : {
8698 storyversioncode : true ,
8799 personcode : true ,
@@ -92,15 +104,55 @@ export default () =>
92104 in : storyversioncodes ,
93105 } ,
94106 } ,
95- } ) ) . groupBy ( 'storyversioncode' , '[]' ) ;
107+ } )
108+ ) . groupBy ( "storyversioncode" , "[]" , ( { personcode, plotwritartink } ) => ( {
109+ personcode,
110+ plotwritartink,
111+ } ) ) ;
112+
113+ const storyversionAppearances = (
114+ await prismaCoa . inducks_appearance . findMany ( {
115+ select : {
116+ storyversioncode : true ,
117+ charactercode : true ,
118+ } ,
119+ where : {
120+ storyversioncode : {
121+ in : storyversioncodes ,
122+ } ,
123+ } ,
124+ } )
125+ ) . groupBy ( "storyversioncode" , "charactercode[]" ) ;
126+
127+ const entries = Object . fromEntries (
128+ Object . entries (
129+ entriesList . groupBy (
130+ "entrycode" ,
131+ null ,
132+ ( { title, storyversioncode } ) => ( {
133+ storyversioncode,
134+ title,
135+ publishers : publishers [ issue . issuecode ] || [ ] ,
136+ appearances :
137+ ( storyversioncode &&
138+ storyversionAppearances [ storyversioncode ] ) ||
139+ [ ] ,
140+ jobs :
141+ ( storyversioncode &&
142+ storyversionjobs [ storyversioncode ] ) ||
143+ [ ] ,
144+ storyversion :
145+ ( storyversioncode &&
146+ storyversions [ storyversioncode ] ) ||
147+ null ,
148+ } ) ,
149+ ) ,
150+ ) . sort ( ( [ a ] , [ b ] ) => a . localeCompare ( b ) ) ,
151+ ) ;
152+
96153 data = {
97154 issue,
98- entries : entries . groupBy ( 'entrycode' , '[]' , ( { title, storyversioncode} ) => ( {
99- storyversioncode,
100- title,
101- jobs : storyversioncode && storyversionjobs [ storyversioncode ] || [ ] ,
102- storyversion : storyversioncode && storyversions [ storyversioncode ] || null ,
103- } ) ) ,
155+ entries,
104156 } ;
105157 } catch ( error ) {
106158 res . writeHead ( 404 ) ;
@@ -176,7 +228,9 @@ export default () =>
176228 }
177229 }
178230
179- res . writeHead ( "error" in data ? 500 : 200 , { "Content-Type" : "text/json" } ) ;
231+ res . writeHead ( "error" in data ? 500 : 200 , {
232+ "Content-Type" : "application/json" ,
233+ } ) ;
180234 res . write ( JSON . stringify ( data ) ) ;
181235 res . end ( ) ;
182236 } ) ;
0 commit comments