1e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria/*
2e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Copyright (C) 2017 The Android Open Source Project
3e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria *
4e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Licensed under the Apache License, Version 2.0 (the "License");
5e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * you may not use this file except in compliance with the License.
6e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * You may obtain a copy of the License at
7e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria *
8e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria *      http://www.apache.org/licenses/LICENSE-2.0
9e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria *
10e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Unless required by applicable law or agreed to in writing, software
11e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * distributed under the License is distributed on an "AS IS" BASIS,
12e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * See the License for the specific language governing permissions and
14e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * limitations under the License.
15e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria */
16564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariapackage androidx.work.integration.testapp.db;
17e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria
18e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.arch.persistence.room.Database;
19e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.arch.persistence.room.Room;
20e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.arch.persistence.room.RoomDatabase;
21e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.content.Context;
22e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria
23e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria/**
24e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * A test database.
25e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria */
26bf442d53cfe91cb9712765770b15dbbb9c912ae9Sumir Kataria@Database(entities = {WordCount.class, Image.class}, version = 1, exportSchema = false)
27e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariapublic abstract class TestDatabase extends RoomDatabase {
28e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria
29e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria    private static TestDatabase sInstance;
30e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria
31e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria    /**
32e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     * Gets a static instance of the test database.
33e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     *
34e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     * @param context A {@link Context} for initialization (we use the application context)
35e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     * @return The static instance of a {@link TestDatabase}
36e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     */
37e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria    public static TestDatabase getInstance(Context context) {
38e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria        if (sInstance == null) {
39e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria            sInstance = Room.databaseBuilder(
40c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar                    context.getApplicationContext(), TestDatabase.class, "testdb").build();
41e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria        }
42e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria        return sInstance;
43e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria    }
44e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria
45e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria    /**
46e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     * Gets the Data Access Object for the wordcount table.
47e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     *
48e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     * @return The Data Access Object for the wordcount table
49e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria     */
50e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria    public abstract WordCountDao getWordCountDao();
51c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar
52c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    /**
53c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar     * Gets the Data Access Object for the image table.
54c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar     *
55c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar     * @return The Data Access Object for the image table
56c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar     */
57c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar    public abstract ImageDao getImageDao();
58e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria}
59