| Version 2 (modified by , 2 days ago) ( diff ) |
|---|
UseCase009 with SQL - Објавување на песна/албум
Актери
- Најавен артист
Чекор 1
Артистот пристапува до својот личен профил
SELECT u.username,
u.full_name,
u.profile_photo,
COUNT(DISTINCT follower)as follower_cnt,
COUNT(DISTINCT followee) as followee_cnt
FROM Artists a
JOIN Non_admin_users nau ON a.user_id=8 AND nau.user_id=8
JOIN Users u ON u.user_id=nau.user_id
JOIN Follows f ON f.followee=u.user_id OR f.follower=u.user_id
GROUP BY u.username ,u.full_name, u.profile_photo
SELECT me.title,
me.genre,
c.contribution_order,
STRING_AGG(r.name, ', ' ORDER BY r.name) AS roles
FROM Artists a
JOIN Non_admin_users nau on a.user_id=8 and nau.user_id=8
JOIN Users u on u.user_id=nau.user_id
JOIN Contributions c on c.artist_id=8
JOIN Musical_entities me on me.id=c.musical_entity_id
JOIN Contribution_roles cr on cr.musical_entity_id=c.musical_entity_id
and cr.artist_id=c.artist_id
JOIN Roles r on r.role_id=cr.role_id
GROUP BY me.id, me.title, me.genre, me.release_date, c.contribution_order
ORDER BY c.contribution_order, me.release_date DESC
На профилната страна се прикажуваат бројот на следбеници, бројот на корисници кои артистот ги следи, како и неговите објавени песни/албуми. Записите каде артистот е носител на делото, т.е. contribution_order=1, се прикажуваат први, а потоа следат сите останати подредени по нивниот contribution_order.
Чекор 2
При клик на копче за додавање нов албум се прикажува интерфејс каде корисникот ги пополнува соодветните информации.
INSERT INTO Musical_entities (id, title, genre, release_date, released_by)
VALUES
(22, 'Album1','X','2026-01-01',8);
INSERT INTO Albums (id) values (22);
-- за албумот и за секоја песна одделно се запишува придонесот, како и улогата која ја имал артистот INSERT INTO Contributions (musical_entity_id, artist_id, contribution_order) VALUES (22, 8, 1);
INSERT INTO Contribution_roles (musical_entity_id, artist_id, role_id) VALUES (22, 8, 1);
--for each song
INSERT INTO Musical_entities (id, title, genre, release_date, released_by)
VALUES
(23, 'Song1','X','2026-01-01',8);
INSERT INTO Songs (id, album_id, link) VALUES (23,22,'example.com');
INSERT INTO Contributions (musical_entity_id, artist_id, contribution_order) VALUES (23, 8, 1);
INSERT INTO Contribution_roles (musical_entity_id, artist_id, role_id) VALUES (23, 8, 1);
Чекор 3 (опционално - дополнителни придонесувачи)
-- пример: featured артист со ID=15 се додава како втор придонесувач на песната INSERT INTO Contributions (musical_entity_id, artist_id, contribution_order) VALUES (23, 15, 2);
INSERT INTO Contribution_roles (musical_entity_id, artist_id, role_id) VALUES (23, 15, (SELECT role_id FROM Roles WHERE name='Featured Artist'));
Note:
See TracWiki
for help on using the wiki.
