summaryrefslogtreecommitdiff
path: root/rust/scripts/populate/database.py
blob: 23198121941582f3336f725f303511ac4389896a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import mysql.connector
import getpass


def get_database_password():
    return getpass.getpass("Insert database password: ")


connector = mysql.connector.connect(
    host="localhost",
    user="balalaika_user",
    password=get_database_password(),
    database="balalaika",
)

cursor = connector.cursor()




def process_albums(album_list):
    [process_album(album, album_id)
     for album_id, album in enumerate(album_list, 1)]


def process_album(album, album_id):
    upload_album(album)
    [upload_song(song, album_id) for song in album.songs]


def upload_album(album):
    album.name = album.name.lower()
    cursor.execute("""
        INSERT INTO album (
            name, cover, artist_id
        )
        VALUES (
            %(name)s, %(cover)s, %(artist_id)s
        );
    """, {
        'name': album.name,
        'cover': album.cover,
        'artist_id': album.artist
    })


def upload_song(song, album_id):
    cursor.execute("""
        INSERT INTO song (
            name, lyrics, album_id
        )
        VALUES (
            %(name)s, %(lyrics)s, %(album_id)s
        )
    """, {
        'name': song.name,
        'lyrics': song.lyrics,
        'album_id': album_id
    })


def process_artists(artist_names):
    [process_artist(artist) for artist in artist_names]


def process_artist(artist):
    artist = artist.lower()
    cursor.execute("""
        INSERT INTO artist (
            name
        )
        VALUES (
            %(name)s
        )
    """, {
        'name': artist,
    })


def close():
    cursor.close()
    connector.commit()
    connector.close()