1
0
Fork 0
mirror of https://github.com/MatomoCamp/matomocamp-companion-android.git synced 2024-09-19 16:13:46 +02:00

store URL from API response

This commit is contained in:
Lukas Winkler 2022-10-25 17:44:53 +02:00
parent c13d43af59
commit 2609cb150f
Signed by: lukas
GPG key ID: 54DE4D798D244853
5 changed files with 16 additions and 15 deletions

View file

@ -124,6 +124,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
event.endTime,
event.roomName,
event.slug,
event.url,
trackId,
event.abstractText,
event.description
@ -251,7 +252,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns the event with the specified id, or null if not found.
*/
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type
FROM events e
JOIN events_titles et ON e.id = et.`rowid`
@ -266,7 +267,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns all found events whose id is part of the given list.
*/
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked
FROM events e
@ -284,7 +285,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns the events for a specified track, including their bookmark status.
*/
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked
FROM events e
@ -302,7 +303,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns the events for a specified track, without their bookmark status.
*/
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type
FROM events e
JOIN events_titles et ON e.id = et.`rowid`
@ -318,7 +319,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns events starting in the specified interval, ordered by ascending start time.
*/
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked
FROM events e
@ -337,7 +338,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns events in progress at the specified time, ordered by descending start time.
*/
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked
FROM events e
@ -356,7 +357,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns the events presented by the specified person.
*/
@Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked
FROM events e JOIN events_titles et ON e.id = et.`rowid`
@ -374,7 +375,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
/**
* Returns all events.
*/
@Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id , e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked
FROM events e JOIN events_titles et ON e.id = et.`rowid`
@ -392,7 +393,7 @@ abstract class ScheduleDao(private val appDatabase: AppDatabase) {
* We need to use an union of 3 sub-queries because a "match" condition can not be
* accompanied by other conditions in a "where" statement.
*/
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, et.title, et.subtitle, e.abstract, e.description,
@Query("""SELECT e.id, e.start_time, e.end_time, e.room_name, e.slug, e.url, et.title, et.subtitle, e.abstract, e.description,
GROUP_CONCAT(p.name, ', ') AS persons, e.day_index, d.date AS day_date, e.track_id, t.name AS track_name, t.type AS track_type,
b.event_id IS NOT NULL AS is_bookmarked
FROM events e

View file

@ -28,6 +28,7 @@ class EventEntity(
@ColumnInfo(name = "room_name")
val roomName: String?,
val slug: String?,
val url: String?,
@ColumnInfo(name = "track_id")
val trackId: Long,
@ColumnInfo(name = "abstract")

View file

@ -25,7 +25,7 @@ import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
object DatabaseModule {
private const val DB_FILE = "fosdem.sqlite"
private const val DB_FILE = "matomocamp.sqlite"
private const val DB_DATASTORE_FILE = "database"
@Provides

View file

@ -26,6 +26,7 @@ data class Event(
@ColumnInfo(name = "room_name")
val roomName: String?,
val slug: String?,
val url: String?,
val title: String?,
@ColumnInfo(name = "subtitle")
val subTitle: String?,
@ -49,11 +50,6 @@ data class Event(
Duration.between(startTime, endTime)
}
val url: String?
get() {
val s = slug ?: return null
return MatomoCampUrls.getEvent(s, day.date.year)
}
override fun toString(): String = title.orEmpty()
}

View file

@ -62,6 +62,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
var startTime: Instant? = null
var duration: String? = null
var slug: String? = null
var url: String? = null
var title: String? = null
var subTitle: String? = null
var trackName = ""
@ -85,6 +86,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
}
"duration" -> duration = parser.nextText()
"slug" -> slug = parser.nextText()
"url" -> url = parser.nextText()
"title" -> title = parser.nextText()
"subtitle" -> subTitle = parser.nextText()
"track" -> trackName = parser.nextText()
@ -130,6 +132,7 @@ class EventsParser : Parser<Sequence<DetailedEvent>> {
startTime = startTime,
endTime = endTime,
slug = slug,
url = url,
title = title,
subTitle = subTitle,
track = Track(name = trackName, type = trackType),