Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

サークル, イベント, 場所のContent Collectionsのスキーマを追加した #25

Merged
merged 7 commits into from
Oct 6, 2024
1 change: 1 addition & 0 deletions .prototools
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
bun = "1.1.20"
node = "22.9.0"
ReoHakase marked this conversation as resolved.
Show resolved Hide resolved
2 changes: 1 addition & 1 deletion lefthook.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ pre-commit:
commands:
# リントとフォーマット (Biome)
biome:
glob: "*.{tsx,ts,mts,mjs,cjs,js,json,yml,yaml}"
glob: "*.{tsx,ts,mts,mjs,cjs,js,json}"
run: |
bun run check:fix {staged_files}
stage_fixed: true # 書き込み修正を行なった差分をステージングする
Expand Down
Binary file added src/content/circles/_images/club-season.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions src/content/circles/club-season.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
# 仕様: https://www.notion.so/shikosai33/8345f5b29cea40aaa2cc9fd6ab79c6a6?pvs=4#5438a1577b604f39a67658a72f2283b8

# サークルカットの画像
image: ./_images/club-season.jpg

# サークルの名前
name: Club Season

# サークルの開催団体の名前 (2年2組, 天文部など)
organizer-name: Club Season

# サークルの区分 (技術系, 文化系, 飲食系のいずれか)
category: 文化系

# サークルの概要
summary: 可愛いキャストと一緒にたくさんお話ししましょ♡

# サークルの場所
location: seminar-room

# X, Instagramなどの外部リンク
# urls:
# - https://x.com/example
# - https://instagram.com/example
---
たくさんの可愛いキャストと一緒にお話ししたり飲み物一緒に飲んだりできます ♡
お菓子も食べ放題です^^
写真も一緒に撮れますので是非遊びに来てください ♡
67 changes: 67 additions & 0 deletions src/content/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import { defineCollection, reference, z } from 'astro:content';

export const BUILDINGS = [
'1号館',
'2号館',
'3号館',
'4号館',
'5号館',
'6号館',
'7号館',
'8号館',
'9号館',
'10号館',
'図書館棟',
'第一体育館',
'第二体育館',
'茨友館',
'武道場',
'グラウンド',
] as const satisfies string[];

const locations = defineCollection({
type: 'data',
schema: z
.object({
'building-name': z.enum(BUILDINGS).describe('建物名'),
floor: z.number().int().positive().optional().describe('階数'),
'room-name': z.string().optional().describe('部屋の名前'),
})
.describe('構内の場所'),
});

const circles = defineCollection({
type: 'content',
schema: ({ image }) =>
z
.object({
image: image().describe('サークルカットの画像 1:1'),
name: z.string().describe('名前'),
'organizer-name': z.string().describe('開催する団体の名前 (例) 2年2組, 5年情報系'),
category: z.enum(['技術系', '文化系', '飲食系']).describe('サークルの区分'), // サークルの区分。技術系、文化系、食品系
location: reference('locations').describe('配置場所'),
urls: z.array(z.string().url()).optional().describe('X, Instagramなどの外部リンク'),
summary: z.string().describe('サークルの説明の要約文'),
})
.describe('サークル'),
});

const events = defineCollection({
type: 'content',
schema: ({ image }) =>
z
.object({
image: image().describe('イベントの画像 1:1'),
name: z.string().describe('イベント名'),
'organizer-name': z.string().optional().describe('開催する団体の名前'),
'starts-at': z.coerce.date().describe('開始時刻'),
'ends-at': z.coerce.date().describe('終了時刻'),
location: reference('locations').describe('公演場所'),
urls: z.array(z.string().url()).optional().describe('X, Instagramなどの外部リンク'),
youtube: z.string().url().optional().describe('YouTubeの動画もしくはライブ配信のURL'),
summary: z.string().describe('イベントの説明の要約文'),
})
.describe('イベント (音楽、ダンスなど)'),
});

export const collections = { locations, circles, events };
Binary file added src/content/events/_images/PLUSHIE.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
32 changes: 32 additions & 0 deletions src/content/events/gasaire-plankton.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
# 仕様: https://www.notion.so/shikosai33/8345f5b29cea40aaa2cc9fd6ab79c6a6?pvs=4#9ae1134163bc41fca64fb5161acf4e19

# イベントのアイコン画像 (アー写)
image: ./_images/gasaire-plankton.jpg

# イベントの名前 (バンドの名前)
name: がさいれぷらんくとん

# イベントの開催者の名前 (団体の名前) - バンドの場合は省略
# organizer-name: 茨香祭実行委員会

# イベントの概要 (バンドからのコメント)
summary: 久しぶり😁✋❤元気にしてたカナ⁉️なんと‼️今度、がさいれぷらんくとんでまたLIVE🕺✨をします😊モチロン、みんな見に来てくれるヨネ❓来てくれないとチョット怒っちゃうかも、、、(`・д・)σ メッ!冗談、冗談(笑)😀☺️❤みんなで沢山盛り上がろうね❤

# イベントの場所 (ステージ名)
location: indoor-stage

# 開始時刻 (ISO8601, UTC+9タイムゾーン)
starts-at: 2024-10-26T13:40:00+0900

# 終了時刻 (ISO8601, UTC+9タイムゾーン)
ends-at: 2024-10-26T14:05:00+0900

# X, Instagramなどの外部リンク
# urls:
# - https://x.com/example
# - https://instagram.com/example

# Youtubeの動画もしくはライブ配信のURL
# youtube: https://www.youtube.com/watch?v=
---
31 changes: 31 additions & 0 deletions src/content/events/plushie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
# 仕様: https://www.notion.so/shikosai33/8345f5b29cea40aaa2cc9fd6ab79c6a6?pvs=4#9ae1134163bc41fca64fb5161acf4e19

# イベントのアイコン画像 (アー写)
image: ./_images/plushie.png

# イベントの名前 (バンドの名前)
name: PLUSHIE

# イベントの開催者の名前 (団体の名前) - バンドの場合は省略
# organizer-name: 茨香祭実行委員会

# イベントの概要 (バンドからのコメント)
summary: ダンス部OGを中心としたメンバーによる、数年間の全てをかけた最高クオリティを保証するダンスパフォーマンスです。現地に来れない方にも楽しんでいただけるステージの生配信も準備中です!

# イベントの場所 (ステージ名)
location: indoor-stage

# 開始時刻 (ISO8601, UTC+9タイムゾーン)
starts-at: 2024-10-27T14:00:00+0900

# 終了時刻 (ISO8601, UTC+9タイムゾーン)
ends-at: 2024-10-27T14:25:00+0900

# X, Instagramなどの外部リンク
urls:
- https://www.instagram.com/official_plushie

# Youtubeの動画もしくはライブ配信のURL
# youtube: https://www.youtube.com/watch?v=
---
10 changes: 10 additions & 0 deletions src/content/locations/indoor-stage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 仕様: https://www.notion.so/shikosai33/8345f5b29cea40aaa2cc9fd6ab79c6a6?pvs=4#d807a577a28c499b81715893ee0fbfa8

# 建物の名前 (第一体育館, 1号館, 2号館, ..., 10号館, グラウンド, etc.) `src/content/config.ts`を参照
building-name: 第一体育館

# 階数 (1階建てや屋外の場合は省略)
# floor: 1

# 部屋の名前 (2年2組教室, 屋外ステージ, 屋内ステージ, etc.)
room-name: 屋内ステージ
10 changes: 10 additions & 0 deletions src/content/locations/seminar-room.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 仕様: https://www.notion.so/shikosai33/8345f5b29cea40aaa2cc9fd6ab79c6a6?pvs=4#d807a577a28c499b81715893ee0fbfa8

# 建物の名前 (第一体育館, 1号館, 2号館, ..., 10号館, グラウンド, etc.) `src/content/config.ts`を参照
building-name: 図書館棟

# 階数 (1階建てや屋外の場合は省略)
floor: 1

# 部屋の名前 (2年2組教室, 屋外ステージ, 屋内ステージ, etc.)
room-name: セミナー交流室