Exemplo n.º 1
0
        public async Task <ImportStats> UpdateSongPlays(SetlistShow show, IEnumerable <SetlistSong> songs)
        {
            var stats = new ImportStats();
            await db.WithConnection(async con => {
                stats.Created += await con.ExecuteAsync(@"
                    INSERT
                    INTO
                        setlist_songs_plays

                        (
                            played_setlist_song_id,
                            played_setlist_show_id
                        )
                    VALUES
                        (
                            @songId,
                            @showId
                        )
                    ON CONFLICT
                        ON CONSTRAINT setlist_songs_plays_song_id_show_id_key
                        DO NOTHING
                ", songs.Select(song => new { showId = show.id, songId = song.id }));

                stats.Removed += await con.ExecuteAsync(@"
                    DELETE
                    FROM
                        setlist_songs_plays
                    WHERE
                        played_setlist_show_id = @showId
                        AND NOT(played_setlist_song_id = ANY(@songIds))
                ", new { showId = show.id, songIds = songs.Select(s => s.id).ToList() });
            });

            return(stats);
        }
Exemplo n.º 2
0
        public async Task <SetlistShow> Save(SetlistShow show)
        {
            var p = new {
                show.id,
                show.artist_id,
                show.venue_id,
                show.date,
                show.tour_id,
                show.upstream_identifier,
                show.updated_at,
            };

            if (show.id != 0)
            {
                return(await db.WithConnection(con => con.QuerySingleAsync <SetlistShow>(@"
                    UPDATE
                        setlist_shows
                    SET
                        artist_id = @artist_id,
                        venue_id = @venue_id,
                        date = @date,
                        tour_id = @tour_id,
                        upstream_identifier = @upstream_identifier,
                        updated_at = @updated_at,
                        uuid = md5(@artist_id || '::setlist_show::' || @upstream_identifier)::uuid
                    WHERE
                        id = @id
                    RETURNING *
                ", p)));
            }
            else
            {
                return(await db.WithConnection(con => con.QuerySingleAsync <SetlistShow>(@"
                    INSERT INTO
                        setlist_shows

                        (
                            artist_id,
                            venue_id,
                            date,
                            tour_id,
                            upstream_identifier,
                            updated_at,
                            uuid
                        )
                    VALUES
                        (
                            @artist_id,
                            @venue_id,
                            @date,
                            @tour_id,
                            @upstream_identifier,
                            @updated_at,
                            md5(@artist_id || '::setlist_show::' || @upstream_identifier)::uuid
                        )
                    RETURNING *
                ", p)));
            }
        }
Exemplo n.º 3
0
 public async Task <int> RemoveSongPlays(SetlistShow show)
 {
     return(await db.WithConnection(con => con.ExecuteAsync(@"
         DELETE
         FROM
             setlist_songs_plays
         WHERE
             played_setlist_show_id = @showId
     ", new { showId = show.id })));
 }
Exemplo n.º 4
0
Arquivo: Form1.cs Projeto: n9ds/HID
 private void Dlg_SetlistSelected(object sender, SetlistSelectedEventArgs e)
 {
     if (SetlistShowDlg == null || SetlistShowDlg.IsDisposed)
     {
         SetlistShowDlg = new SetlistShow(e.SetlistId);
         OpenSetlist    = SetlistShowDlg;
         SetlistShowDlg.SongSelected += new EventHandler <SongSelectedEventArgs>(Dlg_SongSelected);
     }
     else
     {
         SetlistShowDlg.SetlistId = e.SetlistId;
         SetlistShowDlg.LoadSetlist();
     }
     SetlistShowDlg.Show();
     SetlistShowDlg.BringToFront();
 }
Exemplo n.º 5
0
        public async Task <SetlistShow> Save(SetlistShow show)
        {
            if (show.id != 0)
            {
                return(await db.WithConnection(con => con.QuerySingleAsync <SetlistShow>(@"
                    UPDATE
                        setlist_shows
                    SET
                        artist_id = @artist_id,
                        venue_id = @venue_id,
                        date = @date,
                        tour_id = @tour_id,
                        upstream_identifier = @upstream_identifier,
                        updated_at = @updated_at
                    WHERE
                        id = @id
                    RETURNING *
                ", show)));
            }
            else
            {
                return(await db.WithConnection(con => con.QuerySingleAsync <SetlistShow>(@"
                    INSERT INTO
                        setlist_shows

                        (
                            artist_id,
                            venue_id,
                            date,
                            tour_id,
                            upstream_identifier,
                            updated_at
                        )
                    VALUES
                        (
                            @artist_id,
                            @venue_id,
                            @date,
                            @tour_id,
                            @upstream_identifier,
                            @updated_at
                        )
                    RETURNING *
                ", show)));
            }
        }
Exemplo n.º 6
0
        public async Task <int> AddSongPlays(SetlistShow show, IEnumerable <SetlistSong> songs)
        {
            return(await db.WithConnection(con => con.ExecuteAsync(@"
                INSERT
                INTO
                    setlist_songs_plays

                    (
                        played_setlist_song_id,
                        played_setlist_show_id
                    )
                VALUES
                    (
                        @songId,
                        @showId
                    )
            ", songs.Select(song => new { showId = show.id, songId = song.id }))));
        }