Coder Social home page Coder Social logo

sql2cypher's Introduction

Hi, I'm Artyom


I am a first-year student at MIPT. I have been programming for three years and I try something new all the time. Managed to gain experience in system programming in Huawei and ISP RAS. I am also learning Web Backend Development while leading a team, which is developing StudOko Web application in Kotlin for ATP department at MIPT.

Currently developing several projects and working in ISP RAS over a static analyzer Svace by Samsung.

My CV is here.

Contact me on social media


LinkedIn LinkedIn | LinkedIn Telegram | LinkedIn Email

More stuff about me

What I'm currently learning


Now, I study Data Flow Analysis (DFA) at work and the Rust language in my free time.

Projects


  • [C++] sql2cypher is a unique tool, which allows you to translate your queries when migrating from RDBMS (Microsoft SQL Server) into GDBMS (Neo4j).

  • [C++] logger is a very lightweight, flexible, simple and universal logger for C++ projects. It supports different formats (in e.g. json), colors, can write logs in some places (files, stdout) and so on.

  • [Kotlin] StudOko is a web application that will allow the Department of ATP at the MIPT to issue and accept homework for students, control access to a server cluster and department's GitLab.

Skills


  • Languages: Java, C/C++, Kotlin and a little bit Python, Ruby, Go
  • DBMS: Microsoft SQL Server, Neo4j
  • DevOps: Linux, Git and a little bit Docker, CI/CD
  • Agile: Scrum & Kanban in Jira

See more in my CV.

sql2cypher's People

Contributors

c71n93 avatar temikfart avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

sql2cypher's Issues

Add unit-testing for Parser module

Add unit-testing for the enums, classifiers in Parser module. Also, we can test validation methods and methods with the return value.

Code Style with Clang Format

To fix C++ Code Style in the project need to use, for example, Clang Format in CI and check it for each merge request.

Refactor app configuration

Now, the configuration module is very bad, because there are a lot of methods for validation with dirty error messages, bad argument parsing implementation, etc.

Add MacOS and Windows builds to CI

Now build.yml runs GitHub Actions only for ubuntu. Need to add build and test scripts for MacOS and Windows for cross-platform testing.

Separate the logger

Now, module, which is responsible for the logging in the application, is very bad coded. I suggest to use open-source logger. Also, we need to remove any logs from configuration module and break the connections between configuration and logging modules.

Extract Lexem class from INode

Now, INode class plays a double role: INode and Lexem. Lexer must parse input file to lexem, Parser must take Array of Tokens/Lexems and create AST nodes. These tokens should have only one DataType and do not know about Statements.

New argument parsing

Need to move arguments parsing to another place. Also, I want to see more clear code.

Update README

README.md is not actuale for now. There are no information about new argument parser, how configuration works and how to write tests.

Use formatted strings for validation

We have a lot of invocations of the methods validateX, where we pass an argument: msg. msg is consist of strings, line number and other parts, which are concatenated in one large string.

Maybe it is possible to use formatted strings from C++20 or create analogue in string_utils.

Extra logs in tests

When some function, for example, PrintHelpAndExit(), prints help info in stdout inside the EXPECT_EXIT macro, this function output will be in the final output near the logs from Google Test framework. This invalid behavior, because test output makes it difficult to read test results.

Cmake build with subdirectories

Now, all build logic placed in the only one CMakeLists.txt in the root of project. Need to use CMakeLists.txt for each directory with sources and tests using add_subdirectory.

Add checks that input SQL queries are supported using Grammar in EBNF

If there is some tool that can check that some input (SQL queries) matches the grammar it will be cool feature for the SCC.

Workflow:

  • User runs the SCC and pass as agrument path to the SQL queries;
  • SCC at first checks that all of the queries are supported and can be converted;
  • if any errors -> report about it;
  • otherwise -> translation will start.

Refactor AST and Tokenizer

  • Unnecessary getters and setters in ast.h;
  • Outdated docs;
  • Unnecessary unused methods;
  • Class Node contains two entities inside: lexem and AST node. It should be separated to two pieces.

Option without parameter should be invalid

If I run SCC with the following command:

scc --sql="/path/to/sql_queries.sql" --mode

where I didn't specified any parameter for the --mode, scc will use default value for the --mode, but I think it is incorrect. Need to raise an error in this case.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.