import kotlin.Boolean; CREATE TABLE IF NOT EXISTS BankAccess ( id INTEGER PRIMARY KEY AUTOINCREMENT, domesticBankCode TEXT NOT NULL, loginName TEXT NOT NULL, password TEXT, bankName TEXT NOT NULL, bic TEXT, customerName TEXT NOT NULL, userId TEXT, selectedTanMethodIdentifier TEXT, selectedTanMediumIdentifier TEXT, bankingGroup TEXT, serverAddress TEXT, countryCode TEXT NOT NULL, clientData TEXT, userSetDisplayName TEXT, displayIndex INTEGER NOT NULL, iconUrl TEXT, wrongCredentialsEntered INTEGER AS Boolean NOT NULL ); insertBank: INSERT INTO BankAccess( domesticBankCode, loginName, password, bankName, bic, customerName, userId, selectedTanMethodIdentifier, selectedTanMediumIdentifier, bankingGroup, serverAddress, countryCode, clientData, userSetDisplayName, displayIndex, iconUrl, wrongCredentialsEntered ) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ); getAllBanks: SELECT BankAccess.* FROM BankAccess; CREATE TABLE IF NOT EXISTS BankAccount ( id INTEGER PRIMARY KEY AUTOINCREMENT, bankId INTEGER NOT NULL, identifier TEXT NOT NULL, subAccountNumber TEXT, iban TEXT, productName TEXT, accountHolderName TEXT NOT NULL, type TEXT NOT NULL, currency TEXT NOT NULL, accountLimit TEXT, isAccountTypeSupportedByApplication INTEGER AS Boolean NOT NULL, features TEXT NOT NULL, balance TEXT NOT NULL, serverTransactionsRetentionDays INTEGER, lastAccountUpdateTime TEXT, retrievedTransactionsFrom TEXT, userSetDisplayName TEXT, displayIndex INTEGER NOT NULL, hideAccount INTEGER AS Boolean NOT NULL, includeInAutomaticAccountsUpdate INTEGER AS Boolean NOT NULL ); CREATE INDEX idx_BankAccount_bankId ON BankAccount (bankId); insertBankAccount: INSERT INTO BankAccount( bankId, identifier, accountHolderName, type, iban, subAccountNumber, productName, currency, accountLimit, balance, isAccountTypeSupportedByApplication, features, serverTransactionsRetentionDays, lastAccountUpdateTime, retrievedTransactionsFrom, userSetDisplayName, displayIndex, hideAccount, includeInAutomaticAccountsUpdate ) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ); getAllBankAccounts: SELECT BankAccount.* FROM BankAccount; CREATE TABLE IF NOT EXISTS TanMethod ( id INTEGER PRIMARY KEY AUTOINCREMENT, bankId INTEGER NOT NULL, displayName TEXT NOT NULL, type TEXT NOT NULL, identifier TEXT NOT NULL, maxTanInputLength INTEGER , allowedTanFormat TEXT NOT NULL, userSetDisplayName TEXT ); CREATE INDEX idx_TanMethod_bankId ON TanMethod (bankId); insertTanMethod: INSERT INTO TanMethod( bankId, displayName, type, identifier, maxTanInputLength, allowedTanFormat, userSetDisplayName ) VALUES ( ?, ?, ?, ?, ?, ?, ? ); getAllTanMethods: SELECT TanMethod.* FROM TanMethod; CREATE TABLE IF NOT EXISTS TanMedium ( id INTEGER PRIMARY KEY AUTOINCREMENT, bankId INTEGER NOT NULL, type TEXT NOT NULL, mediumName TEXT, status TEXT NOT NULL, -- MobilePhone TanMedium phoneNumber TEXT, concealedPhoneNumber TEXT, -- TanGenerator TanMedium cardNumber TEXT, cardSequenceNumber TEXT, cardType INTEGER, validFrom TEXT, validTo TEXT, userSetDisplayName TEXT ); CREATE INDEX idx_TanMedium_bankId ON TanMedium (bankId); insertTanMedium: INSERT INTO TanMedium( bankId, type, mediumName, status, phoneNumber, concealedPhoneNumber, cardNumber, cardSequenceNumber, cardType, validFrom, validTo, userSetDisplayName ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ); getAllTanMedia: SELECT TanMedium.* FROM TanMedium; -- TODO: find a better place for this cross-cutting concern: getLastInsertedId: SELECT last_insert_rowid();