初回時DBテーブルを作りdb/mylog.dbファイルを出力するようにした。

ブツ

インストール&実行

NAME='Electron.MyLog.20220910134158'
git clone https://github.com/ytyaru/$NAME
cd $NAME
npm install
npm start

準備

  1. GitHubアカウントを作成する
  2. repoスコープ権限をもったアクセストークンを作成する
  3. インストール&実行してアプリ終了する
    1. db/setting.jsonファイルが自動作成される
  4. db/setting.jsonに以下をセットしファイル保存する
    1. username:任意のGitHubユーザ名
    2. email:任意のGitHubメールアドレス
    3. token:repoスコープ権限を持ったトークン
    4. repo.name:任意リポジトリ名
    5. address:任意モナコイン用アドレス
  5. dst/mytestrepo/.gitが存在しないことを確認する(あればdstごと削除する)
  6. GitHub上に同名リモートリポジトリが存在しないことを確認する(あれば削除する)

実行

  1. npm startで起動またはアプリでCtrl+Shift+Rキーを押す(リロードする)
  2. git initコマンドが実行される
    • repo/リポジトリ名ディレクトリが作成され、その配下に.gitディレクトリが作成される
  3. [createRepo][]実行後、リモートリポジトリが作成される

GitHub Pages デプロイ

アップロードされたファイルからサイトを作成する。

  1. アップロードしたユーザのリポジトリページにアクセスする(https://github.com/ユーザ名/リポジトリ名
  2. 設定ページにアクセスする(https://github.com/ユーザ名/リポジトリ名/settings
  3. Pagesページにアクセスする(https://github.com/ユーザ名/リポジトリ名/settings/pages
    1. SourceのコンボボックスがDeploy from a branchになっていることを確認する
    2. Branchmasterにし、ディレクトリを/(root)にし、Saveボタンを押す
    3. F5キーでリロードし、そのページにhttps://ytyaru.github.io/リポジトリ名/のリンクが表示されるまでくりかえす(数分かかる
    4. https://ytyaru.github.io/リポジトリ名/のリンクを参照する(デプロイ完了してないと404エラー)

すべて完了したリポジトリとそのサイト例が以下。

やったこと

  • 新規追加
    • 初回時DBテーブルを作りdb/mylog.dbファイルを出力するようにした
  • バグ修正
    • DBからつぶやきを取得するとき0件だとエラーになるの修正した
      • main.js
        • ipcMain.handle('get', async(event) => {
    • 削除ボタン押下後、投げモナボタンが表示されないバグ修正
  • リファクタリング
    • main.js
      • ipcMainではデフォルト引数が使えないので削除した
        • ipcMain.handle('get', async(event) => {
          • await loadDb(path)を削除した
          • 必ずget()より前にloadDb()を呼び出すようにする
    • preload.js
      • 不要コード削除
  • 画面フォーカス
    • つぶくやく削除が正常終了したらテキストエリアにフォーカスする

初回時DB作成

async function loadDb(filePath) {
    if (null === filePath) { filePath = `src/db/mylog.db` }
    if (!lib.has(`DB`)) {
        const SQL = await initSqlJs().catch(e=>console.error(e))
        lib.set(`SQL`, SQL)
        if (fs.existsSync(filePath)) {
            const db = new SQL.Database(new Uint8Array(fs.readFileSync(filePath)))
            lib.set(`DB`, db)
        } else {
            const db = new SQL.Database()
            lib.set(`DB`, db)
            createTable()
            fs.writeFileSync(filePath, lib.get(`DB`).export())
        }
    }
    return lib.get(`DB`)
}
async function createTable() {
    const sql = `create table if not exists comments (
  id integer primary key not null,
  content text not null,
  created integer not null
);`
    const res = lib.get(`DB`).exec(sql)
    console.log(res)
}
条件 ルート
DBファイル既存 if
DBファイルなし else

アプリ起動時、DBファイルがなければテーブルを作成し、DBファイルを作成する。

分岐のところの実装が似たようなコードになっててダサい。けど、まあいいか。