Skip to content

Commit 6f71d84

Browse files
Merge pull request #20 from SinSo-API/dev
bugfix: song-suggestion-missing-sinhala-details
2 parents 12fd8d9 + 0226861 commit 6f71d84

File tree

4 files changed

+48
-15
lines changed

4 files changed

+48
-15
lines changed

doc/openapi.spec.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1165,6 +1165,16 @@ export const generateOpenAPISpec = () => {
11651165
type: 'string',
11661166
example: 'Lyricist Name',
11671167
description: 'Name of the lyricist (Optional)'
1168+
},
1169+
submitter_name: {
1170+
type: 'string',
1171+
example: 'Sample User',
1172+
description: 'Name of the person submitting the suggestion (Optional)'
1173+
},
1174+
submitter_email: {
1175+
type: 'string',
1176+
example: 'example@example.com',
1177+
description: 'Email of the person submitting the suggestion (Optional)'
11681178
}
11691179
}
11701180
},

src/models/Suggestion.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@ export interface Suggestion {
22
id?: number;
33
title: string;
44
artist: string;
5+
songNameSinhala?: string | null;
6+
artistNameSinhala?: string | null;
57
album?: string | null;
68
year?: number | null;
79
lyrics: string;
10+
lyricContentSinhala?: string | null;
11+
duration?: number | null;
12+
composer?: string | null;
13+
lyricist?: string | null;
814
submitter_name?: string | null;
915
submitter_email?: string | null;
1016
status: 'pending' | 'approved' | 'rejected';
@@ -16,9 +22,15 @@ export interface Suggestion {
1622
export interface SuggestionCreateInput {
1723
title: string;
1824
artist: string;
25+
title_sinhala?: string;
26+
artist_sinhala?: string;
1927
album?: string;
2028
year?: number;
2129
lyrics: string;
30+
lyrics_sinhala?: string;
31+
duration?: number;
32+
composer?: string;
33+
lyricist?: string;
2234
submitter_name?: string;
2335
submitter_email?: string;
2436
}

src/routes/suggestions.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ suggestionsRouter.get('/health', (c) => {
1818
suggestionsRouter.post('/', async (c) => {
1919
try {
2020
const body = await c.req.json<SuggestionCreateInput>();
21-
const { title, artist, album, year, lyrics, submitter_name, submitter_email } = body;
21+
const { title, artist, title_sinhala, artist_sinhala, album, year, lyrics, lyrics_sinhala, duration, composer, lyricist, submitter_name, submitter_email } = body;
2222

2323
// Validation
2424
if (!title || !artist || !lyrics) {
@@ -50,15 +50,7 @@ suggestionsRouter.post('/', async (c) => {
5050
}
5151

5252
const service = new SuggestionsService(c.env.sinso_api_db);
53-
const result = await service.createSuggestion({
54-
title,
55-
artist,
56-
album,
57-
year,
58-
lyrics,
59-
submitter_name,
60-
submitter_email
61-
});
53+
const result = await service.createSuggestion(body);
6254

6355
return c.json(
6456
{

src/services/suggestionsService.ts

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,31 @@ export class SuggestionsService {
44
constructor(private db: D1Database) {}
55

66
async createSuggestion(input: SuggestionCreateInput): Promise<{ id: number; suggestion: Suggestion }> {
7+
console.log('Creating suggestion with input:', JSON.stringify(input, null, 2));
8+
console.log('Sinhala fields:', {
9+
title_sinhala: input.title_sinhala,
10+
artist_sinhala: input.artist_sinhala,
11+
lyrics_sinhala: input.lyrics_sinhala
12+
});
13+
714
const result = await this.db
815
.prepare(
916
`INSERT INTO pending_suggestions
10-
(title, artist, album, year, lyrics, submitter_name, submitter_email, status, created_at)
11-
VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', datetime('now'))`
17+
(title, artist, songNameSinhala, artistNameSinhala, album, year, lyrics, lyricContentSinhala, duration, composer, lyricist, submitter_name, submitter_email, status, created_at)
18+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', datetime('now'))`
1219
)
1320
.bind(
1421
input.title,
1522
input.artist,
23+
input.title_sinhala || null,
24+
input.artist_sinhala || null,
1625
input.album || null,
1726
input.year || null,
1827
input.lyrics,
28+
input.lyrics_sinhala || null,
29+
input.duration || null,
30+
input.composer || null,
31+
input.lyricist || null,
1932
input.submitter_name || null,
2033
input.submitter_email || null
2134
)
@@ -29,9 +42,15 @@ export class SuggestionsService {
2942
id: suggestionId,
3043
title: input.title,
3144
artist: input.artist,
45+
songNameSinhala: input.title_sinhala || null,
46+
artistNameSinhala: input.artist_sinhala || null,
3247
album: input.album || null,
3348
year: input.year || null,
3449
lyrics: input.lyrics,
50+
lyricContentSinhala: input.lyrics_sinhala || null,
51+
duration: input.duration || null,
52+
composer: input.composer || null,
53+
lyricist: input.lyricist || null,
3554
submitter_name: input.submitter_name || null,
3655
submitter_email: input.submitter_email || null,
3756
status: 'pending',
@@ -43,7 +62,7 @@ export class SuggestionsService {
4362
async getSuggestionStatus(id: number): Promise<Suggestion | null> {
4463
const suggestion = await this.db
4564
.prepare(
46-
`SELECT id, title, artist, status, created_at, reviewed_at
65+
`SELECT id, title, artist, songNameSinhala, artistNameSinhala, status, created_at, reviewed_at
4766
FROM pending_suggestions
4867
WHERE id = ?`
4968
)
@@ -56,8 +75,8 @@ export class SuggestionsService {
5675
async getAllSuggestions(status: string = 'pending'): Promise<Suggestion[]> {
5776
const { results } = await this.db
5877
.prepare(
59-
`SELECT id, title, artist, album, year, lyrics,
60-
submitter_name, submitter_email, status, created_at, reviewed_at, rejection_reason
78+
`SELECT id, title, artist, songNameSinhala, artistNameSinhala, album, year, lyrics, lyricContentSinhala,
79+
duration, composer, lyricist, submitter_name, submitter_email, status, created_at, reviewed_at, rejection_reason
6180
FROM pending_suggestions
6281
WHERE status = ?
6382
ORDER BY created_at DESC`

0 commit comments

Comments
 (0)