Skip to content

Commit

Permalink
feat(shared): save address in local database for event sessions.
Browse files Browse the repository at this point in the history
  • Loading branch information
GerardPaligot committed May 11, 2024
1 parent ebc6f44 commit c7b76e3
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.sqlite.db.SupportSQLiteDatabase
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
import org.gdglille.devfest.db.Conferences4HallDatabase
import org.gdglille.devfest.db.Event
import org.gdglille.devfest.db.EventSession
import org.gdglille.devfest.db.Partner

actual class DatabaseWrapper(val context: Context) {
Expand All @@ -20,9 +21,10 @@ actual class DatabaseWrapper(val context: Context) {
}
)
return Conferences4HallDatabase.invoke(
driver,
Event.Adapter(formatted_addressAdapter = listOfStringsAdapter),
Partner.Adapter(formatted_addressAdapter = listOfStringsAdapter)
driver = driver,
EventAdapter = Event.Adapter(formatted_addressAdapter = listOfStringsAdapter),
EventSessionAdapter = EventSession.Adapter(formatted_addressAdapter = listOfStringsAdapter),
PartnerAdapter = Partner.Adapter(formatted_addressAdapter = listOfStringsAdapter)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import org.gdglille.devfest.db.TalkSessionWithSpeakers
import org.gdglille.devfest.extensions.formatHoursMinutes
import org.gdglille.devfest.models.ScheduleItemV4
import org.gdglille.devfest.models.Session
import org.gdglille.devfest.models.ui.AddressUi
import org.gdglille.devfest.models.ui.CategoryUi
import org.gdglille.devfest.models.ui.EventSessionItemUi
import org.gdglille.devfest.models.ui.FormatUi
Expand Down Expand Up @@ -115,6 +116,11 @@ fun SelectBreakSessions.convertEventSessionItemUi(strings: Strings): EventSessio
val endDateTime = end_time.toLocalDateTime()
val diff = endDateTime.toInstant(TimeZone.UTC).minus(startDateTime.toInstant(TimeZone.UTC))
val timeInMinutes = diff.inWholeMinutes.toInt()
val address = if (formatted_address != null && address != null && latitude != null && longitude != null) {
AddressUi(formatted_address.toImmutableList(), address, latitude, longitude)
} else {
null
}
return EventSessionItemUi(
id = id,
title = title,
Expand All @@ -125,7 +131,8 @@ fun SelectBreakSessions.convertEventSessionItemUi(strings: Strings): EventSessio
startTime = start_time,
endTime = end_time,
timeInMinutes = timeInMinutes,
time = strings.texts.scheduleMinutes(timeInMinutes)
time = strings.texts.scheduleMinutes(timeInMinutes),
addressUi = address
)
}

Expand All @@ -134,6 +141,11 @@ fun SelectEventSessionById.convertEventSessionItemUi(strings: Strings): EventSes
val endDateTime = end_time.toLocalDateTime()
val diff = endDateTime.toInstant(TimeZone.UTC).minus(startDateTime.toInstant(TimeZone.UTC))
val timeInMinutes = diff.inWholeMinutes.toInt()
val address = if (formatted_address != null && address != null && latitude != null && longitude != null) {
AddressUi(formatted_address.toImmutableList(), address, latitude, longitude)
} else {
null
}
return EventSessionItemUi(
id = id,
title = title,
Expand All @@ -144,7 +156,8 @@ fun SelectEventSessionById.convertEventSessionItemUi(strings: Strings): EventSes
startTime = start_time,
endTime = end_time,
timeInMinutes = timeInMinutes,
time = strings.texts.scheduleMinutes(timeInMinutes)
time = strings.texts.scheduleMinutes(timeInMinutes),
addressUi = address
)
}

Expand Down Expand Up @@ -258,5 +271,9 @@ fun Session.Event.convertToDb(eventId: String): EventSession = EventSession(
id = this.id,
title = this.title,
description = this.description,
formatted_address = address?.formatted,
address = address?.address,
latitude = address?.lat,
longitude = address?.lng,
event_id = eventId
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ALTER TABLE EventSession ADD COLUMN formatted_address TEXT;
ALTER TABLE EventSession ADD COLUMN address TEXT;
ALTER TABLE EventSession ADD COLUMN latitude TEXT;
ALTER TABLE EventSession ADD COLUMN longitude TEXT;
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import kotlin.collections.List;
import kotlin.Boolean;
import kotlin.String;

CREATE TABLE Session (
id TEXT NOT NULL PRIMARY KEY,
Expand All @@ -19,6 +21,10 @@ CREATE TABLE EventSession(
id TEXT NOT NULL PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
formatted_address TEXT AS List<String>,
address TEXT,
latitude REAL,
longitude REAL,
event_id TEXT NOT NULL
);

Expand Down Expand Up @@ -66,15 +72,17 @@ ORDER BY start_time;
selectBreakSessions:
SELECT Session.id, Session.order_, Session.event_id, Session.date, Session.start_time,
Session.end_time, Session.room, Session.session_event_id, EventSession.title,
EventSession.description
EventSession.description, EventSession.formatted_address, EventSession.address,
EventSession.latitude, EventSession.longitude
FROM Session
INNER JOIN EventSession ON Session.session_event_id = EventSession.id
WHERE Session.event_id = ?
ORDER BY start_time;

selectEventSessionById:
SELECT Session.id, Session.order_, Session.event_id, Session.start_time, Session.end_time,
Session.room, Session.session_event_id, EventSession.title, EventSession.description
Session.room, Session.session_event_id, EventSession.title, EventSession.description,
EventSession.formatted_address, EventSession.address, EventSession.latitude, EventSession.longitude
FROM Session
INNER JOIN EventSession ON Session.session_event_id = EventSession.id
WHERE Session.event_id = ? AND Session.session_event_id = ?;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import app.cash.sqldelight.driver.native.NativeSqliteDriver
import co.touchlab.sqliter.DatabaseConfiguration
import org.gdglille.devfest.db.Conferences4HallDatabase
import org.gdglille.devfest.db.Event
import org.gdglille.devfest.db.EventSession
import org.gdglille.devfest.db.Partner

actual class DatabaseWrapper {
Expand All @@ -18,9 +19,10 @@ actual class DatabaseWrapper {
}
)
return Conferences4HallDatabase.invoke(
driver,
Event.Adapter(formatted_addressAdapter = listOfStringsAdapter),
Partner.Adapter(formatted_addressAdapter = listOfStringsAdapter)
driver = driver,
EventAdapter = Event.Adapter(formatted_addressAdapter = listOfStringsAdapter),
EventSessionAdapter = EventSession.Adapter(formatted_addressAdapter = listOfStringsAdapter),
PartnerAdapter = Partner.Adapter(formatted_addressAdapter = listOfStringsAdapter)
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.gdglille.devfest.models.ui

import kotlinx.collections.immutable.ImmutableList

data class AddressUi(
val formattedAddress: ImmutableList<String>,
val address: String,
val latitude: Double,
val longitude: Double
)
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ data class EventSessionItemUi(
val endTime: String,
val timeInMinutes: Int,
val time: String,
val room: String
val room: String,
val addressUi: AddressUi?
) : SessionItemUi() {
companion object {
val fakePause = EventSessionItemUi(
Expand All @@ -76,7 +77,8 @@ data class EventSessionItemUi(
time = "20 minutes",
room = "Salle Lumière",
title = "Pause ☕️",
description = null
description = null,
addressUi = null
)
}
}

0 comments on commit c7b76e3

Please sign in to comment.