~aleteoryx/muditaos

37665c297143f9fe103f2880a79faab75cf82263 — Mateusz Piesta 2 years ago 5b0ea28
[MOS-000] Fixed minor issue in db migration script

* Removed doubled copyright header from 'up/down/devel.sql' when committing
databases.
* During installing, 'devel.sql' was created even if specific revisions
didn't contain one.
* Removed unnecessary product-specific .lua scripts.
4 files changed, 17 insertions(+), 49 deletions(-)

M products/PurePhone/services/db/databases/migration/sms/0/devel.sql
D scripts/lua/products/BellHybrid/update_product.lua
D scripts/lua/products/PurePhone/update_product.lua
M tools/db_migration.py
M products/PurePhone/services/db/databases/migration/sms/0/devel.sql => products/PurePhone/services/db/databases/migration/sms/0/devel.sql +1 -0
@@ 1,5 1,6 @@
-- Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
-- For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

BEGIN TRANSACTION;
INSERT OR REPLACE INTO "sms" ("_id","thread_id","contact_id","date","error_code","body","type") VALUES (1,2,2,1547492320,0,'Thank you for today!' || CHAR(10) || 'You chose a fantastic place :)',8);
INSERT OR REPLACE INTO "sms" ("_id","thread_id","contact_id","date","error_code","body","type") VALUES (2,2,2,1547492321,0,'It was great seeing you too :*',4);

D scripts/lua/products/BellHybrid/update_product.lua => scripts/lua/products/BellHybrid/update_product.lua +0 -17
@@ 1,17 0,0 @@
local paths = require('paths')
local consts = require('consts')
local helpers = require('helpers')
local recovery = require('recovery')

local update_product = {}

function update_product.execute()
    local old_music_dir = recovery.sys.user() .. "/music"
    local new_music_dir = recovery.sys.user() .. "/media/app/relaxation"

    assert(helpers.mkdirp(new_music_dir))
    helpers.move_dir(old_music_dir, new_music_dir)
    helpers.rmdir(old_music_dir)
end

return update_product

D scripts/lua/products/PurePhone/update_product.lua => scripts/lua/products/PurePhone/update_product.lua +0 -22
@@ 1,22 0,0 @@
local paths = require('paths')
local consts = require('consts')
local helpers = require('helpers')
local recovery = require('recovery')

local update_product = {}

function update_product.execute()
    local old_music_dir = recovery.sys.user() .. "/music"
    local new_music_dir = recovery.sys.user() .. "/media/app/music_player"
    local old_battery_config = recovery.sys.user() .. "/batteryFuelGaugeConfig.cfg"
    local new_battery_config = paths.target.var_dir .. "/batteryFuelGaugeConfig.cfg"

    assert(helpers.mkdirp(new_music_dir))
    helpers.move_dir(old_music_dir, new_music_dir)
    helpers.rmdir(old_music_dir)
    if helpers.exists(old_battery_config) then
        helpers.copy_file(old_battery_config, new_battery_config)
    end
end

return update_product

M tools/db_migration.py => tools/db_migration.py +16 -10
@@ 79,13 79,15 @@ class ConstRevisionEntry:
        self.metadata = RevisionMetadata.from_file(dir / RevisionMetadata.file_name)

    def read_sql(self):
        lines_to_skip = license_header.count('\n')

        with open(self.dir / up_script) as f:
            up = f.read()
            up = ''.join(f.readlines()[lines_to_skip:])
        with open(self.dir / down_script) as f:
            down = f.read()
            down = ''.join(f.readlines()[lines_to_skip:])
        try:
            with open(self.dir / devel_script) as f:
                devel = f.read()
                devel = ''.join(f.readlines()[lines_to_skip:])
        except OSError:
            devel = None
        return up, down, devel


@@ 109,13 111,13 @@ class RevisionEntry:

    def _build_sql_template(self):
        with (self.dir / up_script).open('w') as file:
            file.write(self._sql_header())
            file.write(license_header + self._sql_header())

        with (self.dir / down_script).open('w') as file:
            file.write(self._sql_header())
            file.write(license_header + self._sql_header())

        with (self.dir / devel_script).open('w') as file:
            file.write(self._sql_header())
            file.write(license_header + self._sql_header())

    def _sql_header(self):
        return f'-- Message: {self.message}\n' \


@@ 336,18 338,22 @@ def merge_sql_from_dir(directory: Path, out: Path):
    revisions = build_revision_entries(directory)

    # Merge up/down.sql
    with open(out / up_script, 'w') as up_file, open(out / down_script, 'w') as down_file, open(out / devel_script,
                                                                                                'w') as devel_file:
    with open(out / up_script, 'w') as up_file, open(out / down_script, 'w') as down_file:
        up_file.write(license_header)
        down_file.write(license_header)
        devel_file.write(license_header)

        for rev in revisions:
            print(f"->Merging revision: {rev.metadata.id()}")
            sql_up, _, sql_devel = rev.read_sql()
            up_file.write(sql_up + '\n')

            if sql_devel:
                devel_file.write(sql_devel + '\n')
                if not (out / devel_script).exists():
                    with open(out / devel_script, 'w') as devel_file:
                        devel_file.write(license_header)

                with open(out / devel_script, 'a+') as devel_file:
                    devel_file.write(sql_devel + '\n')

        # Down scripts need to be merged in reversed order
        for rev in reversed(revisions):