Skip to content

Commit

Permalink
automate event start time
Browse files Browse the repository at this point in the history
  • Loading branch information
Hoishin committed Jun 14, 2024
1 parent 917f86c commit 3f61ce8
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 17 deletions.
32 changes: 17 additions & 15 deletions app/routes/_base.events._index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export default () => {

const eventsByYear = new Map<number, typeof events>();
for (const event of events) {
const year = new Date(event.startsAt).getFullYear();
const year = event.startsAt ? new Date(event.startsAt).getFullYear() : -1;
const existingEvents = eventsByYear.get(year);
if (existingEvents) {
existingEvents.push(event);
Expand All @@ -32,20 +32,22 @@ export default () => {
<Heading as="h2" size="9">
イベント一覧
</Heading>
{[...eventsByYear].map(([year, events]) => (
<Fragment key={year}>
<Heading as="h3" size="8">
{year}
</Heading>
<ul>
{events.map((event) => (
<li key={event.id}>
<Link to={`/events/${event.shortName}`}>{event.name}</Link>
</li>
))}
</ul>
</Fragment>
))}
{[...eventsByYear]
.sort((a, b) => b[0] - a[0])
.map(([year, events]) => (
<Fragment key={year}>
<Heading as="h3" size="8">
{year === -1 ? "不明" : `${year.toFixed()}年`}
</Heading>
<ul>
{events.map((event) => (
<li key={event.id}>
<Link to={`/events/${event.shortName}`}>{event.name}</Link>
</li>
))}
</ul>
</Fragment>
))}
</>
);
};
1 change: 0 additions & 1 deletion app/routes/admin.$/resources/events.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ const EventsCreate = () => {
<SimpleForm>
<TextInput source="name" required />
<TextInput source="shortName" required />
<DateTimeInput source="startsAt" required />
<SelectInput source="syncMethod" choices={syncMethodChoices} required />
<TextInput source="syncExternalId" />
</SimpleForm>
Expand Down
10 changes: 10 additions & 0 deletions app/routes/admin.sync.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ export const action = async ({ request, context }: ActionFunctionArgs) => {
const runsToDelete = existingRuns.filter(
(run) => !run.syncExternalId || !newRunIds.has(run.syncExternalId),
);
let startsAt: Date | undefined;
for (const run of runs) {
if (!startsAt || run.startsAt < startsAt) {
startsAt = run.startsAt;
}
}

await Promise.all([
...runsToDelete.map((run) =>
Expand All @@ -74,6 +80,10 @@ export const action = async ({ request, context }: ActionFunctionArgs) => {
},
}),
),
context.prisma.events.update({
where: { id: eventId },
data: { startsAt },
}),
]);

return json(null);
Expand Down
19 changes: 19 additions & 0 deletions migrations/0012_event-start-time-optional.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
-- RedefineTables
PRAGMA defer_foreign_keys=ON;
PRAGMA foreign_keys=OFF;
CREATE TABLE "new_Events" (
"id" TEXT NOT NULL PRIMARY KEY,
"name" TEXT NOT NULL,
"shortName" TEXT NOT NULL,
"startsAt" DATETIME,
"syncMethod" TEXT NOT NULL,
"syncExternalId" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL
);
INSERT INTO "new_Events" ("createdAt", "id", "name", "shortName", "startsAt", "syncExternalId", "syncMethod", "updatedAt") SELECT "createdAt", "id", "name", "shortName", "startsAt", "syncExternalId", "syncMethod", "updatedAt" FROM "Events";
DROP TABLE "Events";
ALTER TABLE "new_Events" RENAME TO "Events";
CREATE UNIQUE INDEX "Events_shortName_key" ON "Events"("shortName");
PRAGMA foreign_keys=ON;
PRAGMA defer_foreign_keys=OFF;
2 changes: 1 addition & 1 deletion prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ model Events {
id String @id @default(uuid())
name String
shortName String @unique
startsAt DateTime
startsAt DateTime?
syncMethod String
syncExternalId String?
createdAt DateTime @default(now())
Expand Down

0 comments on commit 3f61ce8

Please sign in to comment.