0% found this document useful (0 votes)
8 views2 pages

Files 081931

The document defines a Room database setup for managing airport and favorite flight data in an Android application. It includes a Data Access Object (DAO) interface for querying and manipulating airport and favorite records, as well as entity classes for Airport and Favorite. Additionally, it outlines the database configuration and singleton pattern for accessing the VolDatabase instance.

Uploaded by

euroissetsopkeng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views2 pages

Files 081931

The document defines a Room database setup for managing airport and favorite flight data in an Android application. It includes a Data Access Object (DAO) interface for querying and manipulating airport and favorite records, as well as entity classes for Airport and Favorite. Additionally, it outlines the database configuration and singleton pattern for accessing the VolDatabase instance.

Uploaded by

euroissetsopkeng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

// dao

import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import com.example.volsearch.entity.Airport
import com.example.volsearch.entity.Favorite
import kotlinx.coroutines.flow.Flow

@Dao
interface VolDao{

@Query("SELECT * FROM airport WHERE name LIKE '%' || :query || '%' OR iata_code
LIKE '%' || :query || '%'")
fun searchAirports(query: String): Flow<List<Airport>>

@Query("SELECT * FROM airport WHERE id != :airportId")


fun getVolsFromAirport(airportId: Int): Flow<List<Airport>>

@Query("SELECT * FROM favorite")


fun getFavorites(): Flow<List<Favorite>>

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertFavorite(favorite: Favorite)

@Delete
suspend fun deleteFavorite(favorite: Favorite)

@Query("SELECT * FROM airport WHERE iata_code = :code")


suspend fun getAirportByCode(code: String): Airport?

@Query("SELECT * FROM favorite WHERE departure_code = :departureCode AND


destination_code = :destinationCode LIMIT 1")
suspend fun getFavoriteByCodes(departureCode: String, destinationCode: String):
Favorite?

// entyties

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "airport")
data class Airport(
@PrimaryKey val id:Int =0,
@ColumnInfo(name = "iata_code") val iataCode:String,
val name:String,
val passengers:Int
)

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "favorite")
data class Favorite (
@PrimaryKey(autoGenerate = true) val id:Int=0,
@ColumnInfo(name = "departure_code") val departureCode:String,
@ColumnInfo(name = "destination_code") val destinationCode:String

//model

package com.example.volsearch.model

import com.example.volsearch.entity.Airport

data class Vol(


val departureAirport: Airport,
val arrivalAirport: Airport,
var isFavorite: Boolean
)

//connection a la bdd

import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.example.volsearch.entity.Airport
import com.example.volsearch.entity.Favorite

@Database(entities = [Airport::class,Favorite::class], version = 1)


abstract class VolDatabase : RoomDatabase() {
abstract fun volDao(): VolDao

companion object {
@Volatile
private var INSTANCE: VolDatabase? = null

fun getDatabase(context: android.content.Context): VolDatabase {


return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
VolDatabase::class.java,
"vol_database"
).createFromAsset("chemin vers la base de donnees").build()
INSTANCE = instance
instance
}
}
}
}

You might also like