31 lines
1.2 KiB
Markdown
31 lines
1.2 KiB
Markdown
# pkg/
|
|
|
|
Core domain logic and shared infrastructure.
|
|
|
|
## Patterns
|
|
|
|
- 1:1 mapping with YouTube API resources.
|
|
- Structure: `<resource>.go` + `<resource>_test.go` + `BUILD.bazel` (auto-generated by `bazel run //:gazelle` — do NOT edit manually).
|
|
- Domain packages depend on `auth/` and `common/`.
|
|
|
|
## Testing
|
|
|
|
- Table-driven tests.
|
|
- Real `youtube.Service` with `httptest.NewServer`.
|
|
- Global state (envs) carefully managed/restored.
|
|
- See [docs/HOW_TO_TEST.md](../docs/HOW_TO_TEST.md) for details.
|
|
|
|
## Packages
|
|
|
|
| Package | Description |
|
|
|---------|-------------|
|
|
| `auth/` | Authentication service |
|
|
| `common/` | Shared types |
|
|
| `utils/` | Generic helpers |
|
|
|
|
### Resource Packages
|
|
|
|
Each maps 1:1 to a YouTube API resource:
|
|
|
|
`abuseReport/`, `activity/`, `caption/`, `channel/`, `channelBanner/`, `channelSection/`, `comment/`, `commentThread/`, `i18nLanguage/`, `i18nRegion/`, `liveBroadcast/`, `liveChatBan/`, `liveChatMessage/`, `liveChatModerator/`, `liveStream/`, `member/`, `membershipsLevel/`, `playlist/`, `playlistImage/`, `playlistItem/`, `search/`, `subscription/`, `superChatEvent/`, `thirdPartyLink/`, `thumbnail/`, `video/`, `videoAbuseReportReason/`, `videoCategory/`, `watermark/`
|