wiki:UseCase009Implemented

Version 2 (modified by 231017, 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.