{"id":22297515,"url":"https://github.com/zhum/img","last_synced_at":"2025-03-25T22:43:56.173Z","repository":{"id":48731844,"uuid":"222698173","full_name":"zhum/img","owner":"zhum","description":null,"archived":false,"fork":false,"pushed_at":"2021-07-13T08:29:30.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-30T20:15:03.793Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-19T13:05:35.000Z","updated_at":"2021-07-13T08:29:27.000Z","dependencies_parsed_at":"2022-08-27T05:50:16.403Z","dependency_job_id":null,"html_url":"https://github.com/zhum/img","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhum%2Fimg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhum%2Fimg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhum%2Fimg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhum%2Fimg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhum","download_url":"https://codeload.github.com/zhum/img/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245556960,"owners_count":20634889,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-03T17:49:59.995Z","updated_at":"2025-03-25T22:43:56.149Z","avatar_url":"https://github.com/zhum.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Классы и методы\n----------------\n\nГлавный класс - Img::Img. Перед началом работы нужно вызвать его метод класса\ninit, передав путь к файлу конфигурации:\n\n```\nImg::Img.init('schema.yml')\n```\n\nПосле этого можно получить объект \"таблицы\" по её имени:\n\n```\ntable=Img::Img.data('ИМЯ')\n```\n\nДля таблицы доступны методы получения данных:\n\n- **filter(hash)**\n  получить данные с фильтром. Каждый ключ хэша - имя столбца, значение -\n  условие. Условие может быть равенством, массивом или диапазоном.\n  Если столбец является отношением к другой таблице, то условие указывается в\n  виде аналогичного хэша, но для другой таблицы;\n- **all**\n  получить все данные.\n\nВсе возвращаемые данные являются ROM Datasets, поэтому для получения реального\nзначения нужно вызвать .one, .to_a, или методы типа map/each/итп.\n\nПримеры\n--------\n\n```\nputs Img::Img.data('tasks').filter('owner' =\u003e {'email' =\u003e 'qwe'}).to_a.inspect\nputs Img::Img.data('users').filter('tasks' =\u003e {'descr' =\u003e 'task number 1'}).inspect\n```\n\nФормат файла конфигурации\n--------------------------\n\n```\ntables:\n  ИМЯ_ТАБЛИЦЫ:\n    driver: yaml             # имя драйвера источника данных\n    location: 'data.yml'     # адрес источника данных\n    schema:                  # описание полей\n      id: int                # пример: поле id типа int\n      name: str              # пример: поле name типа str\n      author_id: int\n      descr: str\n    relations:               # ссылки на другие таблицы\n      owner:                 # имя поля\n        type: :belongs_to    # вид отношения\n        table: users         # имя таблицы\n        my_field: :author_id # поле ключа (обязательно с :)\n        key: :id             # поле внешнего ключа (обязательно с :)\n\n  users:\n    driver: sql\n    location: 'sqlite://test.db'\n    schema:\n      id: int\n      name: str\n      email: str\n    relations:\n      tasks:\n        type: :has_many\n        table: tasks\n        my_field: :id\n        key: :author_id\n    options:\n      foo: bar\n```\n\nВиды отношений\n--------------\n\n- **:belongs_to** ссылка на один внешний объект, его id указывается в поле с\n  именем, заданным в my_field, а имя поля, в котором записан id - в key.\n- **:has_many** все объекты из другой таблицы, где в поле, заданном в key, указан\n  наш идентификатор (имя поля идентификатора задано в my_field)\n\n\nTODO\n-----\n\n[+] для filter сделать обработку всех элементов хеша, а не только первого\n[ ] для условий сделать сравнения (больше/меньше/и т.п.)\n[ ] добавить тип \"дата-время\"\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhum%2Fimg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhum%2Fimg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhum%2Fimg/lists"}