Skip to content

Commit 1e2ca28

Browse files
committed
api: WIP FromDucks endpoints
1 parent c915979 commit 1e2ca28

1 file changed

Lines changed: 71 additions & 17 deletions

File tree

packages/api/http.ts

Lines changed: 71 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)