{"id":23727951,"url":"https://github.com/eduardob-programador/simple-crud","last_synced_at":"2026-04-11T08:05:40.879Z","repository":{"id":270007571,"uuid":"909111439","full_name":"EduardoB-Programador/simple-crud","owner":"EduardoB-Programador","description":"A simple create, read, update, delete system I built using mongoDB as a Database","archived":false,"fork":false,"pushed_at":"2024-12-30T01:50:53.000Z","size":7051,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-31T03:04:48.175Z","etag":null,"topics":["database","mongodb","oop","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/EduardoB-Programador.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-27T18:57:44.000Z","updated_at":"2024-12-30T01:50:57.000Z","dependencies_parsed_at":"2025-05-23T19:40:55.186Z","dependency_job_id":null,"html_url":"https://github.com/EduardoB-Programador/simple-crud","commit_stats":null,"previous_names":["eduardob-programador/simple-crud"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EduardoB-Programador/simple-crud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoB-Programador%2Fsimple-crud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoB-Programador%2Fsimple-crud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoB-Programador%2Fsimple-crud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoB-Programador%2Fsimple-crud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EduardoB-Programador","download_url":"https://codeload.github.com/EduardoB-Programador/simple-crud/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoB-Programador%2Fsimple-crud/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262614458,"owners_count":23337277,"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","mongodb","oop","python"],"created_at":"2024-12-31T01:47:19.160Z","updated_at":"2026-04-11T08:05:40.831Z","avatar_url":"https://github.com/EduardoB-Programador.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Navegação/Navigation\n\n|[Português](#português)|[English](#english)|\n|:----------------------|:------------------|\n|[Visão geral](#visão-geral)|[Overview](#overview)|\n|[Arquivo person.py](#arquivo-personpy)|[person.py file](#personpy-file)|\n|[Arquivo connectivity.py](#arquivo-connectivitypy)|[connectivity.py file](#connectivitypy-file)|\n|[Arquivo main.py](#arquivo-mainpy)|[main.py file](#mainpy-file)|\n\n# Português\n\n## Visão geral\nComo o título do repositório propõe, este é um sistema de CRUD (do inglês: criar, ler, atualizar e deletar) bem simples, onde o objetivo é demostrar um certo domínio manipulando o banco de dados **MongoDB**. Aqui eu utilizo de python para realizar a criação de uma nova pessoa e utilizo da biblioteca **pymongo** para pegar o client do MongoDB, pegar o banco de dados a ser utilizado, pegar a coleção desejada e fazer as operações CRUD, tudo através do terminal.\n\n## Arquivo person.py\nNesse arquivo é criada a classe `Person` com os seguintes atributos e comportamentos:\n\n```.py\nage:int\nname:str\nemail:str\nphone_number:str\nregistration_date:datetime.datetime\n\n__init__(self, age:int|None = None,\n    email:str|None = None,\n    name:str|None = None,\n    phone_number:str|None = None) -\u003e None\n\n#Quaisquer outros métodos são irrelevantes\n```\n\nComo o propósito dessa classe é basicamente ter alguma informação relevante e que faça sentido, ela é bem simples por sí só.\n\n## Arquivo connectivity.py\nNesse arquivo é criada a classe `Connectivity`, e aqui, decidi criar toda a lógica relacionada ao MongoDB em sí, conseguir o client, banco de dados, coleção, além da realização das operações CRUD em sí.\n\nO arquivo e a classe são redundantes, mas foram feitas com o objetivo de separar cada grande componente do sistema inteiro em arquivos, fica mais fácil de se localizar, a seguir se encontram os métodos da classe.\n\n```.py\n\n@staticmethod\nget_client(connectivity_string:str) -\u003e pymongo.MongoClient\n\n@staticmethod\nget_db(client:pymongo.MongoClient, database_string:str) -\u003e pymongo.database.Database\n\n@staticmethod\nget_collection(db:pymongo.database.Database, collection_str:str) -\u003e pymongo.collection.Collection\n\n@staticmethod\ninsert_one(collection:pymongo.collection.Collection, person:Person) -\u003e None\n\n@staticmethod\ndelete_one(collection:pymongo.collection.Collection, query:dict) -\u003e None\n\n@staticmethod\nupdate_one(collection:pymongo.collection.Collection, query:dict, values:dict) -\u003e None\n\n@staticmethod\nupdate_many(collection:pymongo.collection.Collection, query:dict, values:dict) -\u003e None\n\n@staticmethod\nfind(collection:pymongo.collection.Collection, query:dict|None = None, projection:dict|None = None) -\u003e list\n```\n\n## Arquivo main.py\nNesse arquivo está presente toda a estrutura de execução e a lógica principal, além de possuir métodos auxiliares e aqueles que remetem a cada uma das operações CRUD\n\nAbaixo se encontra cada método criado no arquivo:\n\n```.py\n#Métodos auxiliares\nperson_creation() -\u003e Person\n\nchoose_field(fields:str, numbers:list[int]) -\u003e int\n\nfield_condition(field:str) -\u003e dict\n\nquery_buider() -\u003e dict\n\nproj_dict_switch(proj_dict:dict, field:str) -\u003e None\n\nprojection_builder() -\u003e dict\n\nset_unset(field:str) -\u003e dict\n\nupdate_builder() -\u003e dict\n\n#Métodos CRUD\ncreate(collection) -\u003e None\n\nread(collection) -\u003e None\n\nupdate_one(collection) -\u003e None\n\nupdate_many(collection) -\u003e None\n\ndelete(collection) -\u003e None\n```\n\nMeu objetivo nesse arquivo, além de ser o responsável pela execução, era deixá-lo o mais modular possível, talvez ainda há a capacidade de deixá-lo ainda mais modular, mas estou bem feliz com o resultado no momento.\n\n# English\n\n## Overview\nAs the repository's title suggests, this is a simple CRUD (Create, Read, Update and Delete) system, where the main focus is to show a certain proficiency using the **MongoDB** database. Here I use python in order to create a new *Person* object, and utilizing the library **pymongo** to get the MongoDB client, the database that will be used and the collection. Doing also the CRUD operations via terminal. \n\n## person.py file\nIn this file the class `Person` is constructed, it has the following fields and behaviors:\n\n```.py\nage:int\nname:str\nemail:str\nphone_number:str\nregistration_date:datetime.datetime\n\n__init__(self, age:int|None = None,\n    email:str|None = None,\n    name:str|None = None,\n    phone_number:str|None = None) -\u003e None\n\n#Further methods are irrelevant for the functionality of the system\n```\n\nSince the purpose of this class is to carry relevant info to be stored, it is quite simple.\n\n## connectivity.py file\nIn this file the class `Connectivity` is built, here I decided to build all MongoDB related methods, such as get_client, get_db, get_collection. And all queries to the database used for the CRUD.\n\nBoth the file and class purposes are redundant, but my intention here is to separate each sytem component in files, making it easier to find yourself in the system, below you can see the class' methods.\n\n```.py\n\n@staticmethod\nget_client(connectivity_string:str) -\u003e pymongo.MongoClient\n\n@staticmethod\nget_db(client:pymongo.MongoClient, database_string:str) -\u003e pymongo.database.Database\n\n@staticmethod\nget_collection(db:pymongo.database.Database, collection_str:str) -\u003e pymongo.collection.Collection\n\n@staticmethod\ninsert_one(collection:pymongo.collection.Collection, person:Person) -\u003e None\n\n@staticmethod\ndelete_one(collection:pymongo.collection.Collection, query:dict) -\u003e None\n\n@staticmethod\nupdate_one(collection:pymongo.collection.Collection, query:dict, values:dict) -\u003e None\n\n@staticmethod\nupdate_many(collection:pymongo.collection.Collection, query:dict, values:dict) -\u003e None\n\n@staticmethod\nfind(collection:pymongo.collection.Collection, query:dict|None = None, projection:dict|None = None) -\u003e list\n```\n\n## main.py file\nThis file holds the main structure to run the system, alongside it, it also holds some auxiliary methods and the CRUD methods.\n\nBelow you can see all methods built in the file:\n\n```.py\n#Auxiliary methods\nperson_creation() -\u003e Person\n\nchoose_field(fields:str, numbers:list[int]) -\u003e int\n\nfield_condition(field:str) -\u003e dict\n\nquery_buider() -\u003e dict\n\nproj_dict_switch(proj_dict:dict, field:str) -\u003e None\n\nprojection_builder() -\u003e dict\n\nset_unset(field:str) -\u003e dict\n\nupdate_builder() -\u003e dict\n\n#CRUD methods\ncreate(collection) -\u003e None\n\nread(collection) -\u003e None\n\nupdate_one(collection) -\u003e None\n\nupdate_many(collection) -\u003e None\n\ndelete(collection) -\u003e None\n```\n\nMy main focus on this file, besides making everything run flawlessly, is to make the code the as modular as possible, maybe there is still some room for improvement, but I'm happy with the current result.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feduardob-programador%2Fsimple-crud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feduardob-programador%2Fsimple-crud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feduardob-programador%2Fsimple-crud/lists"}