== 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')); }}}