매일

새해를 맞이하여 "매일"이라는 새 페이지를 만들었다. 이렇게 생겼다.

kklip data

매일 또는 주기적으로 하고 싶은 일들을 체크하는 단순한 페이지다. 항상 생각만 하고 있다가 새해가 다가오고 바라는 것들이 있어서 후다닥 만들었다.
blog.kkeun.net/thinking/2021-12-28-new-years-wish


KkTable

사실 "매일" 페이지를 즐겁게 만드는 데에 도움을 준 건 나만의 작고 소중한 DB API, KkTable이다.

class MyTable extends KkTable
{
    public function __construct()
    {
        parent::__construct(
            db_file: 'everyday.sqlite3',
            table_name: 'everyday',
            columns: [
                'date' => KkTableColumnType::STRING,
                'breakfast' => KkTableColumnType::INT,
                'vitamin' => KkTableColumnType::INT,
                'exercise' => KkTableColumnType::INT,
                'book' => KkTableColumnType::INT,
            ],
        );
    }
    ...

(여담으로 오늘날의 PHP는 위와 같이 named parameter도 지원하고 enum도 지원한다. 🥳)

위와 같이 적고 나면 KkTable이 많은 자잘한 일들을 해 준다.

즉, 나중에 column을 새로 추가하고 싶을 때에는 아래처럼 PHP 코드만 수정하면 된다. 나의 작고 소중한 KkTable이 대신 필요한 SQLite 쿼리를 날려 줄 거다.

columns: [
    'date' => KkTableColumnType::STRING,
    'breakfast' => KkTableColumnType::INT,
    'vitamin' => KkTableColumnType::INT,
    'exercise' => KkTableColumnType::INT,
    'book' => KkTableColumnType::INT,
    'new_column' => KkTableColumnType::INT, // added
],

아직 column을 지우는 건 지원하지 않지만 안 될 건 없다. 나중에 필요해졌을 때 lazy하게 지원할 생각이다.
www.techonthenet.com/sqlite/tables/alter_table.php

물론, 당연히, 복잡한 쿼리를 전부 지원하지는 않는다.

그럼에도 이게 취미코딩을 하는 데에, 특히 나 혼자 쓰는 작은 크기의 데이터를 다루는 데에는 문제가 없다. (그리고 필요해지면 그때 기능을 추가하면 된다.) DB 쓰는 프로그램을 테스트할 때 아무리 작은 프로그램이라도 DB/table 만들고/지우고, 데이터 넣고/빼고 하는 것이 은근 성가셨는데, 이번에는 개발하면서 굉장히 편하게 테스트했던 것 같다.


연말에 취미코딩을 몰아서 하는 기분이다. 뿌듯뿌듯. 🤓

2021-12-30 씀.