{"id":19696787,"url":"https://github.com/edernucci/database-schema-operator","last_synced_at":"2025-04-29T11:32:12.296Z","repository":{"id":138952385,"uuid":"285440194","full_name":"edernucci/database-schema-operator","owner":"edernucci","description":"Kubernetes Operator to help with Database as a Code","archived":false,"fork":false,"pushed_at":"2020-08-06T21:57:02.000Z","size":74,"stargazers_count":5,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-02T01:15:31.040Z","etag":null,"topics":["database","kubernetes","kubernetes-operator","migration-tool","mssql","mssql-tools","schema-migrations"],"latest_commit_sha":null,"homepage":"https://github.com/edernucci/database-schema-operator","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edernucci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-06T01:07:47.000Z","updated_at":"2024-06-19T12:32:32.788Z","dependencies_parsed_at":"2024-06-19T12:32:28.875Z","dependency_job_id":"8d0be4ef-7db9-4f9f-a4bc-0a75684c553d","html_url":"https://github.com/edernucci/database-schema-operator","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/edernucci%2Fdatabase-schema-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edernucci%2Fdatabase-schema-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edernucci%2Fdatabase-schema-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edernucci%2Fdatabase-schema-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edernucci","download_url":"https://codeload.github.com/edernucci/database-schema-operator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251494048,"owners_count":21598223,"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":["database","kubernetes","kubernetes-operator","migration-tool","mssql","mssql-tools","schema-migrations"],"created_at":"2024-11-11T19:36:08.302Z","updated_at":"2025-04-29T11:32:11.911Z","avatar_url":"https://github.com/edernucci.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Database Migration Schema Operator\nThis is a DBaaC (Database as a Code) using Kubernetes Operator pattern.\n\nThere will be some CRDs\n- Database\n- Table\n\n## Roadmap\n- [x] check if table exists\n- [x] create table with defined columns\n- [x] alter existing columns\n- [ ] add new columns\n- [ ] remove old columns (is it safe?)\n- [x] use connection parameters from Database\n- [ ] refator everything :-)\n\nSample Database:\n```\napiVersion: db.pedag.io/v1\nkind: Database\nmetadata:\n  name: adventureworks\nspec:\n  name: AdventureWorks\n  server: localhost\n  port: 1433\n  user: sa\n  password: itssecret\n```\n\nSample Table:\n```\napiVersion: db.pedag.io/v1\nkind: Table\nmetadata:\n  name: users-table\nspec:\n  name: Users\n  databaseRef:\n    name: adventureworks\n    kind: Database\n  columns:\n  - name: Id\n    type: int not null identity(1,1)\n  - name: Name\n    type: varchar(50) not null\n  - name: Email\n    type: varchar(255) not null\n  - name: Active\n    type: bit not null default(0)\n  - name: Blocked\n    type: bit not null default(0)\n\n```\n\nEvery Table must have a Database reference.\n\nDatabase will be something like SQLDatabase, PostgresDatabase, MySQLDatabase, etc.\n\nNot sure if we will use any orm (like xorm.io) or pure SQL.\n\n## Controller logs:\n```\n2020-08-06T15:48:53.625-0300\tINFO\tcontroller-runtime.metrics\tmetrics server is starting to listen\t{\"addr\": \":8080\"}\n2020-08-06T15:48:53.626-0300\tINFO\tsetup\tstarting manager\n2020-08-06T15:48:53.626-0300\tINFO\tcontroller-runtime.manager\tstarting metrics server\t{\"path\": \"/metrics\"}\n2020-08-06T15:48:53.626-0300\tINFO\tcontroller-runtime.controller\tStarting EventSource\t{\"controller\": \"table\", \"source\": \"kind source: /, Kind=\"}\n2020-08-06T15:48:53.626-0300\tINFO\tcontroller-runtime.controller\tStarting EventSource\t{\"controller\": \"database\", \"source\": \"kind source: /, Kind=\"}\n2020-08-06T15:48:53.727-0300\tINFO\tcontroller-runtime.controller\tStarting Controller\t{\"controller\": \"database\"}\n2020-08-06T15:48:53.727-0300\tINFO\tcontroller-runtime.controller\tStarting workers\t{\"controller\": \"database\", \"worker count\": 1}\n2020-08-06T15:48:53.727-0300\tINFO\tcontroller-runtime.controller\tStarting Controller\t{\"controller\": \"table\"}\n2020-08-06T15:48:53.727-0300\tINFO\tcontroller-runtime.controller\tStarting workers\t{\"controller\": \"table\", \"worker count\": 1}\n2020-08-06T15:48:53.739-0300\tDEBUG\tcontroller-runtime.controller\tSuccessfully Reconciled\t{\"controller\": \"database\", \"request\": \"default/adventureworks\"}\n2020-08-06T15:48:53.781-0300\tINFO\tcontrollers.Table\tCreating table [Addresses] on database.\t{\"table\": \"default/addresses-table\"}\n2020/08/06 15:48:53 create table [Addresses] ([Street] varchar(50),[Number] varchar(50),[UserId] int,)\n2020-08-06T15:48:53.810-0300\tDEBUG\tcontroller-runtime.controller\tSuccessfully Reconciled\t{\"controller\": \"table\", \"request\": \"default/addresses-table\"}\n2020-08-06T15:48:53.853-0300\tINFO\tcontrollers.Table\tCreating table [Users] on database.\t{\"table\": \"default/users-table\"}\n2020/08/06 15:48:53 create table [Users] ([Id] int not null identity(1,1),[Name] varchar(50) not null,[Email] varchar(255) not null,[Active] bit not null default(0),[Blocked] bit not null default(0),)\n2020-08-06T15:48:53.876-0300\tDEBUG\tcontroller-runtime.controller\tSuccessfully Reconciled\t{\"controller\": \"table\", \"request\": \"default/users-table\"}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Federnucci%2Fdatabase-schema-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Federnucci%2Fdatabase-schema-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Federnucci%2Fdatabase-schema-operator/lists"}