This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 0fb564587eb7dfd61c480a46129e5330f5c4bb7d
Author: Bhavesh Asanabada <asanabhav...@gmail.com>
AuthorDate: Mon Jun 27 08:04:08 2022 +0530

    Query SMILES Data
---
 gsoc2022/smilesdb/README                           |   1 -
 gsoc2022/smilesdb/Server/.gitignore                |  33 +
 gsoc2022/smilesdb/Server/mvnw                      | 316 +++++++++
 gsoc2022/smilesdb/Server/mvnw.cmd                  | 188 +++++
 .../main/java/com/smiles/ServerApplication.java    |  24 +
 .../src/main/java/com/smiles/SpringContext.java    |  21 +
 .../java/com/smiles/calcinfo/CalcInfoEntity.java   |  94 +++
 .../java/com/smiles/calcinfo/CalcInfoImpl.java     |  91 +++
 .../java/com/smiles/calcinfo/CalcInfoRepo.java     |  13 +
 .../java/com/smiles/calcprops/CalcPropsEntity.java | 616 +++++++++++++++++
 .../java/com/smiles/calcprops/CalcPropsImpl.java   | 149 ++++
 .../java/com/smiles/calcprops/CalcPropsRepo.java   |   8 +
 .../smiles/calctopology/CalcTopologyEntity.java    | 123 ++++
 .../com/smiles/calctopology/CalcTopologyImpl.java  |  52 ++
 .../com/smiles/calctopology/CalcTopologyRepo.java  |  10 +
 .../java/com/smiles/molData/MoleculeEntity.java    | 761 +++++++++++++++++++++
 .../main/java/com/smiles/molData/MoleculeImpl.java |  97 +++
 .../main/java/com/smiles/molData/MoleculeRepo.java |   8 +
 .../smilesdb/Server/src/main/proto/calc_info.proto |  49 ++
 .../Server/src/main/proto/calc_properties.proto    | 117 ++++
 .../Server/src/main/proto/calc_topology.proto      |  53 ++
 .../smilesdb/Server/src/main/proto/molecule.proto  | 119 ++++
 .../src/main/resources/application.properties      |   2 +
 .../java/com/smiles/ServerApplicationTests.java    |  13 +
 .../__pycache__/calc_info_pb2.cpython-38.pyc       | Bin 0 -> 1629 bytes
 .../__pycache__/calc_info_pb2_grpc.cpython-38.pyc  | Bin 0 -> 4098 bytes
 gsoc2022/smilesdb/smiles_client/calc_info_pb2.py   |  47 ++
 .../smilesdb/smiles_client/calc_info_pb2_grpc.py   | 165 +++++
 gsoc2022/smilesdb/smiles_client/main.py            |  56 ++
 .../smilesdb/smiles_client/proto/calc_info.proto   |  40 ++
 30 files changed, 3265 insertions(+), 1 deletion(-)

diff --git a/gsoc2022/smilesdb/README b/gsoc2022/smilesdb/README
deleted file mode 100644
index 4ea7287d..00000000
--- a/gsoc2022/smilesdb/README
+++ /dev/null
@@ -1 +0,0 @@
-GSoC project to create databases for smiles
diff --git a/gsoc2022/smilesdb/Server/.gitignore 
b/gsoc2022/smilesdb/Server/.gitignore
new file mode 100644
index 00000000..549e00a2
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/gsoc2022/smilesdb/Server/mvnw b/gsoc2022/smilesdb/Server/mvnw
new file mode 100755
index 00000000..8a8fb228
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/mvnw
@@ -0,0 +1,316 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   M2_HOME - location of maven2's installed home dir
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug 
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /usr/local/etc/mavenrc ] ; then
+    . /usr/local/etc/mavenrc
+  fi
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "`uname`" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to 
/Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        export JAVA_HOME="`/usr/libexec/java_home`"
+      else
+        export JAVA_HOME="/Library/Java/Home"
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=`java-config --jre-home`
+  fi
+fi
+
+if [ -z "$M2_HOME" ] ; then
+  ## resolve links - $0 may be a link to maven's home
+  PRG="$0"
+
+  # need this for relative symlinks
+  while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+      PRG="$link"
+    else
+      PRG="`dirname "$PRG"`/$link"
+    fi
+  done
+
+  saveddir=`pwd`
+
+  M2_HOME=`dirname "$PRG"`/..
+
+  # make it fully qualified
+  M2_HOME=`cd "$M2_HOME" && pwd`
+
+  cd "$saveddir"
+  # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --unix "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="`which javac`"
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ 
]*\)'`" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=`which readlink`
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
+      if $darwin ; then
+        javaHome="`dirname \"$javaExecutable\"`"
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+      else
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
+      fi
+      javaHome="`dirname \"$javaExecutable\"`"
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="`\\unset -f command; \\command -v java`"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=`cd "$wdir/.."; pwd`
+    fi
+    # end of workaround
+  done
+  echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    echo "$(tr -s '\n' ' ' < "$1")"
+  fi
+}
+
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from 
Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in 
binary data.
+##########################################################################################
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Found .mvn/wrapper/maven-wrapper.jar"
+    fi
+else
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
+    fi
+    if [ -n "$MVNW_REPOURL" ]; then
+      
jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+    else
+      
jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar";
+    fi
+    while IFS="=" read key value; do
+      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
+      esac
+    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
+    if [ "$MVNW_VERBOSE" = true ]; then
+      echo "Downloading from: $jarUrl"
+    fi
+    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
+    if $cygwin; then
+      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
+    fi
+
+    if command -v wget > /dev/null; then
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Found wget ... using wget"
+        fi
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+        else
+            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD 
"$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+        fi
+    elif command -v curl > /dev/null; then
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Found curl ... using curl"
+        fi
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            curl -o "$wrapperJarPath" "$jarUrl" -f
+        else
+            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" 
"$jarUrl" -f
+        fi
+
+    else
+        if [ "$MVNW_VERBOSE" = true ]; then
+          echo "Falling back to using Java to download"
+        fi
+        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+        # For Cygwin, switch paths to Windows format before running javac
+        if $cygwin; then
+          javaClass=`cygpath --path --windows "$javaClass"`
+        fi
+        if [ -e "$javaClass" ]; then
+            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; 
then
+                if [ "$MVNW_VERBOSE" = true ]; then
+                  echo " - Compiling MavenWrapperDownloader.java ..."
+                fi
+                # Compiling the Java class
+                ("$JAVA_HOME/bin/javac" "$javaClass")
+            fi
+            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; 
then
+                # Running the downloader
+                if [ "$MVNW_VERBOSE" = true ]; then
+                  echo " - Running MavenWrapperDownloader.java ..."
+                fi
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader 
"$MAVEN_PROJECTBASEDIR")
+            fi
+        fi
+    fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+if [ "$MVNW_VERBOSE" = true ]; then
+  echo $MAVEN_PROJECTBASEDIR
+fi
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") 
$MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$M2_HOME" ] &&
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
+export MAVEN_CMD_LINE_ARGS
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  $MAVEN_DEBUG_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.home=${M2_HOME}" \
+  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/gsoc2022/smilesdb/Server/mvnw.cmd 
b/gsoc2022/smilesdb/Server/mvnw.cmd
new file mode 100644
index 00000000..1d8ab018
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/mvnw.cmd
@@ -0,0 +1,188 @@
+@REM 
----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM 
----------------------------------------------------------------------------
+
+@REM 
----------------------------------------------------------------------------
+@REM Maven Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug 
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM 
----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd 
ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" 
%*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" 
%*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another 
setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder 
".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto 
endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do 
set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set 
DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar";
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN 
("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from 
Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in 
binary data.
+if exist %WRAPPER_JAR% (
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Found %WRAPPER_JAR%
+    )
+) else (
+    if not "%MVNW_REPOURL%" == "" (
+        SET 
DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+    )
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
+        echo Downloading from: %DOWNLOAD_URL%
+    )
+
+    powershell -Command "&{"^
+               "$webclient = new-object System.Net.WebClient;"^
+               "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and 
[string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+               "$webclient.Credentials = new-object 
System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+               "}"^
+               "[Net.ServicePointManager]::SecurityProtocol = 
[Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', 
'%WRAPPER_JAR%')"^
+               "}"
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Finished downloading %WRAPPER_JAR%
+    )
+)
+@REM End of extension
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+  %JVM_CONFIG_MAVEN_PROPS% ^
+  %MAVEN_OPTS% ^
+  %MAVEN_DEBUG_OPTS% ^
+  -classpath %WRAPPER_JAR% ^
+  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd 
ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/ServerApplication.java 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/ServerApplication.java
new file mode 100644
index 00000000..1636b3dd
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/ServerApplication.java
@@ -0,0 +1,24 @@
+package com.smiles;
+
+import com.smiles.calcinfo.CalcInfoImpl;
+import io.grpc.Server;
+import io.grpc.ServerBuilder;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+import java.io.IOException;
+
+@SpringBootApplication
+public class ServerApplication {
+
+    public static void main(String[] args) throws IOException, 
InterruptedException {
+
+        SpringApplication.run(ServerApplication.class, args);
+
+        Server server = ServerBuilder.forPort(7594)
+                .addService(new CalcInfoImpl()).build();
+        server.start();
+        System.out.println("\n Server running successfully");
+        server.awaitTermination();
+    }
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/SpringContext.java 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/SpringContext.java
new file mode 100644
index 00000000..7c0903bd
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/SpringContext.java
@@ -0,0 +1,21 @@
+package com.smiles;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringContext implements ApplicationContextAware {
+
+    private static ApplicationContext context;
+
+    public static <T extends Object> T getBean(Class<T> beanClass) {
+        return context.getBean(beanClass);
+    }
+
+    @Override
+    public void setApplicationContext(ApplicationContext context) throws 
BeansException {
+        SpringContext.context = context;
+    }
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoEntity.java
 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoEntity.java
new file mode 100644
index 00000000..94dd8abd
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoEntity.java
@@ -0,0 +1,94 @@
+package com.smiles.calcinfo;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document("calcInfo")
+public class CalcInfoEntity {
+
+    @Id
+    private String id;
+    private long nbasis;
+    private long nmo;
+    private long nalpha;
+    private long nbeta;
+    private long natom;
+    private double energy;
+    private String SMILES;
+
+    public CalcInfoEntity(long nbasis, long nmo, long nalpha, long nbeta, long 
natom, double energy, String SMILES) {
+        this.nbasis = nbasis;
+        this.nmo = nmo;
+        this.nalpha = nalpha;
+        this.nbeta = nbeta;
+        this.natom = natom;
+        this.energy = energy;
+        this.SMILES = SMILES;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public long getNbasis() {
+        return nbasis;
+    }
+
+    public void setNbasis(long nbasis) {
+        this.nbasis = nbasis;
+    }
+
+    public long getNmo() {
+        return nmo;
+    }
+
+    public void setNmo(long nmo) {
+        this.nmo = nmo;
+    }
+
+    public long getNalpha() {
+        return nalpha;
+    }
+
+    public void setNalpha(long nalpha) {
+        this.nalpha = nalpha;
+    }
+
+    public long getNbeta() {
+        return nbeta;
+    }
+
+    public void setNbeta(long nbeta) {
+        this.nbeta = nbeta;
+    }
+
+    public long getNatom() {
+        return natom;
+    }
+
+    public void setNatom(long natom) {
+        this.natom = natom;
+    }
+
+    public double getEnergy() {
+        return energy;
+    }
+
+    public void setEnergy(double energy) {
+        this.energy = energy;
+    }
+
+    public String getSMILES() {
+        return SMILES;
+    }
+
+    public void setSMILES(String SMILES) {
+        this.SMILES = SMILES;
+    }
+
+
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoImpl.java 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoImpl.java
new file mode 100644
index 00000000..3798ca5e
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoImpl.java
@@ -0,0 +1,91 @@
+package com.smiles.calcinfo;
+
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoClients;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoDatabase;
+import com.smiles.*;
+import com.smiles.CalcInfoServiceGrpc;
+import io.grpc.stub.StreamObserver;
+import org.bson.Document;
+
+public class CalcInfoImpl extends CalcInfoServiceGrpc.CalcInfoServiceImplBase {
+
+    CalcInfoRepo repo = SpringContext.getBean(CalcInfoRepo.class);
+
+    @Override
+    public void getCalcInfo(CalcInfoRequest request, StreamObserver<CalcInfo> 
responseObserver) {
+
+        System.out.println(request.getAllFields());
+        repo.deleteAll();
+        CalcInfoEntity c1 = new CalcInfoEntity(1, 1, 1, 1, 1, 1.0, "TEST1");
+        repo.save(c1);
+        CalcInfoEntity c2 = new CalcInfoEntity(2, 2, 2, 2, 2, 2.0, "TEST2");
+        repo.save(c2);
+        // Reply the values
+
+        // String query = request.getCalcInfoQuery()
+
+        //CalcInfoEntity calcInfo = 
repo.findByNalpha(request.getCalcInfoQuery());
+        CalcInfoEntity calcInfo = 
repo.findBySMILES(request.getCalcInfoQuery());
+        System.out.println(calcInfo.toString());
+
+        CalcInfo reply = CalcInfo.newBuilder().setNbeta(calcInfo.getNbeta())
+                .setNmo(calcInfo.getNmo())
+                .setEnergy(calcInfo.getEnergy())
+                .setNalpha(calcInfo.getNalpha())
+                .setNatom(calcInfo.getNatom())
+                .setSMILES(calcInfo.getSMILES()).build();
+        responseObserver.onNext(reply);
+        responseObserver.onCompleted();
+    }
+
+    @Override
+    public void createCalcInfo(com.smiles.CalcInfoRequest request,
+                               
io.grpc.stub.StreamObserver<com.smiles.CalcInfo> responseObserver) {
+
+        CalcInfo calcInfo = request.getCalcInfo();
+        System.out.println(request.getAllFields());
+        CalcInfoEntity c1001 = new CalcInfoEntity(calcInfo.getNbasis(),
+                calcInfo.getNmo(),
+                calcInfo.getNalpha(),
+                calcInfo.getNbeta(),
+                calcInfo.getNatom(),
+                calcInfo.getEnergy(),
+                calcInfo.getSMILES());
+        repo.save(c1001);
+        responseObserver.onNext(calcInfo);
+        responseObserver.onCompleted();
+    }
+
+    @Override
+    public void updateCalcInfo(com.smiles.CalcInfoRequest request,
+                               
io.grpc.stub.StreamObserver<com.smiles.CalcInfo> responseObserver) {
+        CalcInfo calcInfo = request.getCalcInfo();
+        System.out.println(request.getAllFields());
+        CalcInfoEntity c1001 = (CalcInfoEntity) 
repo.findBySMILES(calcInfo.getSMILES());
+        System.out.println(c1001.getId());
+        c1001.setNbasis(calcInfo.getNbasis());
+        c1001.setNmo(calcInfo.getNmo());
+        c1001.setNalpha(calcInfo.getNalpha());
+        c1001.setNbeta(calcInfo.getNbeta());
+        c1001.setNatom(calcInfo.getNatom());
+        c1001.setEnergy(calcInfo.getEnergy());
+        c1001.setSMILES(calcInfo.getSMILES());
+        repo.save(c1001);
+        responseObserver.onNext(calcInfo);
+        responseObserver.onCompleted();
+    }
+
+
+    @Override
+    public void deleteCalcInfo(com.smiles.CalcInfoRequest request,
+                               
io.grpc.stub.StreamObserver<com.smiles.CalcInfo> responseObserver) {
+        CalcInfo calcInfo = request.getCalcInfo();
+        CalcInfoEntity c1001 = (CalcInfoEntity) 
repo.findBySMILES(calcInfo.getSMILES());
+        repo.delete(c1001);
+        responseObserver.onNext(calcInfo);
+        responseObserver.onCompleted();
+    }
+
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoRepo.java 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoRepo.java
new file mode 100644
index 00000000..37611c92
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcinfo/CalcInfoRepo.java
@@ -0,0 +1,13 @@
+package com.smiles.calcinfo;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface CalcInfoRepo extends MongoRepository<CalcInfoEntity, String> {
+
+    public CalcInfoEntity findByNalpha(long nalpha);
+
+    public CalcInfoEntity findBySMILES(String SMILES);
+
+//    public CalcInfoEntity findCalcInfoEntitiesBySMILES(String SMILES);
+
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsEntity.java
 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsEntity.java
new file mode 100644
index 00000000..e9b495c3
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsEntity.java
@@ -0,0 +1,616 @@
+package com.smiles.calcprops;
+
+import org.springframework.data.annotation.Id;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CalcPropsEntity {
+
+    @Id
+    private String id;
+    private String InChI;
+    private String InChIKey;
+    private String SMILES;
+    private String CanonicalSMILES;
+    private String PDB;
+    private String SDF;
+    private String ParsedBy;
+    private String Formula;
+    private long Charge;
+    private long Multiplicity;
+    private String Keywords;
+    private String CalcType;
+    private String Methods;
+    private String Basis;
+    private long NumBasis;
+    private long NumFC;
+    private long NumVirt;
+    private String JobStatus;
+    private String FinTime;
+    private String InitGeom;
+    private String FinalGeom;
+    private String PG;
+    private String ElecSym;
+    private long NImag;
+    private double Energy;
+    private double EnergyKcal;
+    private double ZPE;
+    private double ZPEKcal;
+    private double HF;
+    private double HFKcal;
+    private double Thermal;
+    private double ThermalKcal;
+    private double Enthalpy;
+    private double EnthalpyKcal;
+    private double Entropy;
+    private double EntropyKcal;
+    private double Gibbs;
+    private double GibbsKcal;
+    private String OrgSym;
+    private double Dipole;
+    private double Freq;
+    private double AtomWeigh;
+    private double S2;
+    private String CodeVersion;
+    private String CalcMachine;
+    private String CalcBy;
+    private String MemCost;
+    private String TimeCost;
+    private String CPUTime;
+    private String Convergenece;
+    private String Otherinfo;
+    private String Comments;
+    private long NAtom;
+    private List<Double> Homos;
+    private List<Double> ScfEnergies;
+    private List<Double> MoEnergies;
+    private List<Double> AtomCoords;
+    private long Nmo;
+    private long NBasis;
+
+
+    public CalcPropsEntity(String inChI, String InChIKey, String SMILES, 
String canonicalSMILES, String PDB, String SDF, String parsedBy, String 
formula, long charge, long multiplicity, String keywords, String calcType, 
String methods, String basis, long numBasis, long numFC, long numVirt, String 
jobStatus, String finTime, String initGeom, String finalGeom, String PG, String 
elecSym, long NImag, double energy, double energyKcal, double ZPE, double 
ZPEKcal, double HF, double HFKcal, doubl [...]
+        this.InChI = inChI;
+        this.InChIKey = InChIKey;
+        this.SMILES = SMILES;
+        this.CanonicalSMILES = canonicalSMILES;
+        this.PDB = PDB;
+        this.SDF = SDF;
+        this.ParsedBy = parsedBy;
+        this.Formula = formula;
+        this.Charge = charge;
+        this.Multiplicity = multiplicity;
+        this.Keywords = keywords;
+        this.CalcType = calcType;
+        this.Methods = methods;
+        this.Basis = basis;
+        this.NumBasis = numBasis;
+        this.NumFC = numFC;
+        this.NumVirt = numVirt;
+        this.JobStatus = jobStatus;
+        this.FinTime = finTime;
+        this.InitGeom = initGeom;
+        this.FinalGeom = finalGeom;
+        this.PG = PG;
+        this.ElecSym = elecSym;
+        this.NImag = NImag;
+        this.Energy = energy;
+        this.EnergyKcal = energyKcal;
+        this.ZPE = ZPE;
+        this.ZPEKcal = ZPEKcal;
+        this.HF = HF;
+        this.HFKcal = HFKcal;
+        this.Thermal = thermal;
+        this.ThermalKcal = thermalKcal;
+        this.Enthalpy = enthalpy;
+        this.EnthalpyKcal = enthalpyKcal;
+        this.Entropy = entropy;
+        this.EntropyKcal = entropyKcal;
+        this.Gibbs = gibbs;
+        this.GibbsKcal = gibbsKcal;
+        this.OrgSym = orgSym;
+        this.Dipole = dipole;
+        this.Freq = freq;
+        this.AtomWeigh = atomWeigh;
+        this.S2 = s2;
+        this.CodeVersion = codeVersion;
+        this.CalcMachine = calcMachine;
+        this.CalcBy = calcBy;
+        this.MemCost = memCost;
+        this.TimeCost = timeCost;
+        this.CPUTime = CPUTime;
+        this.Convergenece = convergenece;
+        this.Otherinfo = otherinfo;
+        this.Comments = comments;
+        this.NAtom = NAtom;
+        this.Homos = homos;
+        this.ScfEnergies = scfEnergies;
+        this.MoEnergies = moEnergies;
+        this.AtomCoords = atomCoords;
+        this.Nmo = nmo;
+        this.NBasis = NBasis;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getInChI() {
+        return InChI;
+    }
+
+    public void setInChI(String inChI) {
+        InChI = inChI;
+    }
+
+    public String getInChIKey() {
+        return InChIKey;
+    }
+
+    public CalcPropsEntity setInChIKey(String inChIKey) {
+        InChIKey = inChIKey;
+        return this;
+    }
+
+    public String getSMILES() {
+        return SMILES;
+    }
+
+    public void setSMILES(String SMILES) {
+        this.SMILES = SMILES;
+    }
+
+    public String getCanonicalSMILES() {
+        return CanonicalSMILES;
+    }
+
+    public void setCanonicalSMILES(String canonicalSMILES) {
+        CanonicalSMILES = canonicalSMILES;
+    }
+
+    public String getPDB() {
+        return PDB;
+    }
+
+    public void setPDB(String PDB) {
+        this.PDB = PDB;
+    }
+
+    public String getSDF() {
+        return SDF;
+    }
+
+    public void setSDF(String SDF) {
+        this.SDF = SDF;
+    }
+
+    public String getParsedBy() {
+        return ParsedBy;
+    }
+
+    public void setParsedBy(String parsedBy) {
+        ParsedBy = parsedBy;
+    }
+
+    public String getFormula() {
+        return Formula;
+    }
+
+    public void setFormula(String formula) {
+        Formula = formula;
+    }
+
+    public long getCharge() {
+        return Charge;
+    }
+
+    public void setCharge(long charge) {
+        Charge = charge;
+    }
+
+    public long getMultiplicity() {
+        return Multiplicity;
+    }
+
+    public void setMultiplicity(long multiplicity) {
+        Multiplicity = multiplicity;
+    }
+
+    public String getKeywords() {
+        return Keywords;
+    }
+
+    public void setKeywords(String keywords) {
+        Keywords = keywords;
+    }
+
+    public String getCalcType() {
+        return CalcType;
+    }
+
+    public void setCalcType(String calcType) {
+        CalcType = calcType;
+    }
+
+    public String getMethods() {
+        return Methods;
+    }
+
+    public void setMethods(String methods) {
+        Methods = methods;
+    }
+
+    public String getBasis() {
+        return Basis;
+    }
+
+    public void setBasis(String basis) {
+        Basis = basis;
+    }
+
+    public long getNumBasis() {
+        return NumBasis;
+    }
+
+    public void setNumBasis(long numBasis) {
+        NumBasis = numBasis;
+    }
+
+    public long getNumFC() {
+        return NumFC;
+    }
+
+    public void setNumFC(long numFC) {
+        NumFC = numFC;
+    }
+
+    public long getNumVirt() {
+        return NumVirt;
+    }
+
+    public void setNumVirt(long numVirt) {
+        NumVirt = numVirt;
+    }
+
+    public String getJobStatus() {
+        return JobStatus;
+    }
+
+    public void setJobStatus(String jobStatus) {
+        JobStatus = jobStatus;
+    }
+
+    public String getFinTime() {
+        return FinTime;
+    }
+
+    public void setFinTime(String finTime) {
+        FinTime = finTime;
+    }
+
+    public String getInitGeom() {
+        return InitGeom;
+    }
+
+    public void setInitGeom(String initGeom) {
+        InitGeom = initGeom;
+    }
+
+    public String getFinalGeom() {
+        return FinalGeom;
+    }
+
+    public void setFinalGeom(String finalGeom) {
+        FinalGeom = finalGeom;
+    }
+
+    public String getPG() {
+        return PG;
+    }
+
+    public void setPG(String PG) {
+        this.PG = PG;
+    }
+
+    public String getElecSym() {
+        return ElecSym;
+    }
+
+    public void setElecSym(String elecSym) {
+        ElecSym = elecSym;
+    }
+
+    public long getNImag() {
+        return NImag;
+    }
+
+    public void setNImag(long NImag) {
+        this.NImag = NImag;
+    }
+
+    public double getEnergy() {
+        return Energy;
+    }
+
+    public void setEnergy(double energy) {
+        Energy = energy;
+    }
+
+    public double getEnergyKcal() {
+        return EnergyKcal;
+    }
+
+    public void setEnergyKcal(double energyKcal) {
+        EnergyKcal = energyKcal;
+    }
+
+    public double getZPE() {
+        return ZPE;
+    }
+
+    public void setZPE(double ZPE) {
+        this.ZPE = ZPE;
+    }
+
+    public double getZPEKcal() {
+        return ZPEKcal;
+    }
+
+    public void setZPEKcal(double ZPEKcal) {
+        this.ZPEKcal = ZPEKcal;
+    }
+
+    public double getHF() {
+        return HF;
+    }
+
+    public void setHF(double HF) {
+        this.HF = HF;
+    }
+
+    public double getHFKcal() {
+        return HFKcal;
+    }
+
+    public void setHFKcal(double HFKcal) {
+        this.HFKcal = HFKcal;
+    }
+
+    public double getThermal() {
+        return Thermal;
+    }
+
+    public void setThermal(double thermal) {
+        Thermal = thermal;
+    }
+
+    public double getThermalKcal() {
+        return ThermalKcal;
+    }
+
+    public void setThermalKcal(double thermalKcal) {
+        ThermalKcal = thermalKcal;
+    }
+
+    public double getEnthalpy() {
+        return Enthalpy;
+    }
+
+    public void setEnthalpy(double enthalpy) {
+        Enthalpy = enthalpy;
+    }
+
+    public double getEnthalpyKcal() {
+        return EnthalpyKcal;
+    }
+
+    public void setEnthalpyKcal(double enthalpyKcal) {
+        EnthalpyKcal = enthalpyKcal;
+    }
+
+    public double getEntropy() {
+        return Entropy;
+    }
+
+    public void setEntropy(double entropy) {
+        Entropy = entropy;
+    }
+
+    public double getEntropyKcal() {
+        return EntropyKcal;
+    }
+
+    public void setEntropyKcal(double entropyKcal) {
+        EntropyKcal = entropyKcal;
+    }
+
+    public double getGibbs() {
+        return Gibbs;
+    }
+
+    public void setGibbs(double gibbs) {
+        Gibbs = gibbs;
+    }
+
+    public double getGibbsKcal() {
+        return GibbsKcal;
+    }
+
+    public void setGibbsKcal(double gibbsKcal) {
+        GibbsKcal = gibbsKcal;
+    }
+
+    public String getOrgSym() {
+        return OrgSym;
+    }
+
+    public void setOrgSym(String orgSym) {
+        OrgSym = orgSym;
+    }
+
+    public double getDipole() {
+        return Dipole;
+    }
+
+    public void setDipole(double dipole) {
+        Dipole = dipole;
+    }
+
+    public double getFreq() {
+        return Freq;
+    }
+
+    public void setFreq(double freq) {
+        Freq = freq;
+    }
+
+    public double getAtomWeigh() {
+        return AtomWeigh;
+    }
+
+    public void setAtomWeigh(double atomWeigh) {
+        AtomWeigh = atomWeigh;
+    }
+
+    public double getS2() {
+        return S2;
+    }
+
+    public void setS2(double s2) {
+        S2 = s2;
+    }
+
+    public String getCodeVersion() {
+        return CodeVersion;
+    }
+
+    public void setCodeVersion(String codeVersion) {
+        CodeVersion = codeVersion;
+    }
+
+    public String getCalcMachine() {
+        return CalcMachine;
+    }
+
+    public void setCalcMachine(String calcMachine) {
+        CalcMachine = calcMachine;
+    }
+
+    public String getCalcBy() {
+        return CalcBy;
+    }
+
+    public void setCalcBy(String calcBy) {
+        CalcBy = calcBy;
+    }
+
+    public String getMemCost() {
+        return MemCost;
+    }
+
+    public void setMemCost(String memCost) {
+        MemCost = memCost;
+    }
+
+    public String getTimeCost() {
+        return TimeCost;
+    }
+
+    public void setTimeCost(String timeCost) {
+        TimeCost = timeCost;
+    }
+
+    public String getCPUTime() {
+        return CPUTime;
+    }
+
+    public void setCPUTime(String CPUTime) {
+        this.CPUTime = CPUTime;
+    }
+
+    public String getConvergenece() {
+        return Convergenece;
+    }
+
+    public void setConvergenece(String convergenece) {
+        Convergenece = convergenece;
+    }
+
+    public String getOtherinfo() {
+        return Otherinfo;
+    }
+
+    public void setOtherinfo(String otherinfo) {
+        Otherinfo = otherinfo;
+    }
+
+    public String getComments() {
+        return Comments;
+    }
+
+    public void setComments(String comments) {
+        Comments = comments;
+    }
+
+    public long getNAtom() {
+        return NAtom;
+    }
+
+    public void setNAtom(long NAtom) {
+        this.NAtom = NAtom;
+    }
+
+    public List<Double> getHomos() {
+        return Homos;
+    }
+
+    public void setHomos(List<Double> homos) {
+        Homos = homos;
+    }
+
+    public List<Double> getScfEnergies() {
+        return ScfEnergies;
+    }
+
+    public void setScfEnergies(List<Double> scfEnergies) {
+        ScfEnergies = scfEnergies;
+    }
+
+    public List<Double> getMoEnergies() {
+        return MoEnergies;
+    }
+
+    public void setMoEnergies(List<Double> moEnergies) {
+        MoEnergies = moEnergies;
+    }
+
+    public List<Double> getAtomCoords() {
+        return AtomCoords;
+    }
+
+    public void setAtomCoords(List<Double> atomCoords) {
+        AtomCoords = atomCoords;
+    }
+
+    public long getNmo() {
+        return Nmo;
+    }
+
+    public void setNmo(long nmo) {
+        Nmo = nmo;
+    }
+
+    public long getNBasis() {
+        return NBasis;
+    }
+
+    public void setNBasis(long NBasis) {
+        this.NBasis = NBasis;
+    }
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsImpl.java
 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsImpl.java
new file mode 100644
index 00000000..3aec2474
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsImpl.java
@@ -0,0 +1,149 @@
+package com.smiles.calcprops;
+
+import com.smiles.CalcProps;
+import com.smiles.CalcPropsRequest;
+import com.smiles.CalcPropsServiceGrpc;
+import com.smiles.SpringContext;
+import com.smiles.calcinfo.CalcInfoEntity;
+import io.grpc.stub.StreamObserver;
+
+public class CalcPropsImpl extends 
CalcPropsServiceGrpc.CalcPropsServiceImplBase {
+
+    CalcPropsRepo repo1 = SpringContext.getBean(CalcPropsRepo.class);
+
+    @Override
+    public void getCalcProps(CalcPropsRequest request, 
StreamObserver<CalcProps> responseObserver) {
+//        super.getCalcInfo(request, responseObserver);
+
+        CalcPropsEntity calcProps = 
repo1.findByPDB(request.getCalcPropsQuery());
+        System.out.println(calcProps);
+
+        CalcProps reply = CalcProps.newBuilder()
+                .setInChI(calcProps.getInChI())
+                .setInChIKey(calcProps.getInChIKey())
+                .setSMILES(calcProps.getSMILES())
+                .setCanonicalSMILES(calcProps.getCanonicalSMILES())
+                .setPDB(calcProps.getPDB())
+                .setSDF(calcProps.getSDF())
+                .setParsedBy(calcProps.getParsedBy())
+                .setFormula(calcProps.getFormula())
+                .setCharge(calcProps.getCharge())
+                .setMultiplicity(calcProps.getMultiplicity())
+                .setKeywords(calcProps.getKeywords())
+                .setCalcType(calcProps.getCalcType())
+                .setMethods(calcProps.getMethods())
+                .setBasis(calcProps.getBasis())
+                .setNumBasis(calcProps.getNumBasis())
+                .setNumFC(calcProps.getNumFC())
+                .setNumVirt(calcProps.getNumVirt())
+                .setJobStatus(calcProps.getJobStatus())
+                .setFinTime(calcProps.getFinTime())
+                .setInitGeom(calcProps.getInitGeom())
+                .setFinalGeom(calcProps.getFinalGeom())
+                .setPG(calcProps.getPG()).build();
+        responseObserver.onNext(reply);
+        responseObserver.onCompleted();
+    }
+
+    @Override
+    public void createCalcProps(CalcPropsRequest request, 
StreamObserver<CalcProps> responseObserver) {
+//        super.createCalcProps(request, responseObserver);
+        CalcProps calcProps = request.getCalcProp();
+        System.out.println(request.getAllFields());
+        CalcPropsEntity c2001 = new CalcPropsEntity(calcProps.getInChI(),
+                calcProps.getInChIKey(), calcProps.getSMILES(), 
calcProps.getCanonicalSMILES(),
+                calcProps.getPDB(), calcProps.getSDF(), 
calcProps.getParsedBy(),
+                calcProps.getFormula(), calcProps.getCharge(), 
calcProps.getMultiplicity(),
+                calcProps.getKeywords(), calcProps.getCalcType(), 
calcProps.getMethods(),
+                calcProps.getBasis(), calcProps.getNumBasis(), 
calcProps.getNumFC(),
+                calcProps.getNumVirt(), calcProps.getJobStatus(), 
calcProps.getFinTime(),
+                calcProps.getInitGeom(), calcProps.getFinalGeom(), 
calcProps.getPG(),
+                calcProps.getElecSym(), calcProps.getNImag(), 
calcProps.getEnergy(),
+                calcProps.getEnergyKcal(), calcProps.getZPE(), 
calcProps.getZPEKcal(),
+                calcProps.getHF(), calcProps.getHFKcal(), 
calcProps.getThermal(), calcProps.getThermalKcal(),
+                calcProps.getEnthalpy(), calcProps.getEnthalpyKcal(), 
calcProps.getEntropy(),
+                calcProps.getEntropyKcal(), calcProps.getGibbs(), 
calcProps.getGibbsKcal(),
+                calcProps.getOrbSym(), calcProps.getDipole(), 
calcProps.getFreq(), calcProps.getAtomWeigh(),
+                calcProps.getS2(), calcProps.getCodeVersion(), 
calcProps.getCalcMachine(), calcProps.getCalcBy(),
+                calcProps.getMemCost(), calcProps.getTimeCost(), 
calcProps.getCPUTime(), calcProps.getConvergenece(),
+                calcProps.getOtherinfo(), calcProps.getComments(), 
calcProps.getNAtom(),
+                calcProps.getHomosList(), calcProps.getScfEnergiesList(), 
calcProps.getMoEnergiesList(),
+                calcProps.getAtomCoordsList(), calcProps.getNmo(), 
calcProps.getNBasis());
+
+    }
+
+    @Override
+    public void updateCalcProps(CalcPropsRequest request, 
StreamObserver<CalcProps> responseObserver) {
+//        super.updateCalcProps(request, responseObserver);
+        CalcProps calcProps = request.getCalcProp();
+        System.out.println(request.getAllFields());
+        CalcPropsEntity c2001 = (CalcPropsEntity) 
repo1.findByPDB(calcProps.getPDB());
+        System.out.println(c2001.getId());
+        c2001.setInChI(calcProps.getInChI());
+        c2001.setInChIKey(calcProps.getInChIKey());
+        c2001.setSMILES(calcProps.getSMILES());
+        c2001.setCanonicalSMILES(calcProps.getCanonicalSMILES());
+        c2001.setPDB(calcProps.getPDB());
+        c2001.setSDF(calcProps.getSDF());
+        c2001.setParsedBy(calcProps.getParsedBy());
+        c2001.setFormula(calcProps.getFormula());
+        c2001.setCharge(calcProps.getCharge());
+        c2001.setMultiplicity(calcProps.getMultiplicity());
+        c2001.setKeywords(calcProps.getKeywords());
+        c2001.setCalcType(calcProps.getCalcType());
+        c2001.setMethods(calcProps.getMethods());
+        c2001.setBasis(calcProps.getBasis());
+        c2001.setNBasis(calcProps.getNumBasis());
+        c2001.setNumFC(calcProps.getNumFC());
+        c2001.setNumVirt(calcProps.getNumVirt());
+        c2001.setJobStatus(calcProps.getJobStatus());
+        c2001.setFinTime(calcProps.getFinTime());
+        c2001.setInitGeom(calcProps.getInitGeom());
+        c2001.setFinalGeom(calcProps.getFinalGeom());
+        c2001.setPG(calcProps.getPG());
+        c2001.setElecSym(calcProps.getElecSym());
+        c2001.setNImag(calcProps.getNImag());
+        c2001.setEnergy(calcProps.getEnergy());
+        c2001.setEnergyKcal(calcProps.getEnergyKcal());
+        c2001.setZPE(calcProps.getZPE());
+        c2001.setZPEKcal(calcProps.getZPEKcal());
+        c2001.setHF(calcProps.getHF());
+        c2001.setHFKcal(calcProps.getHFKcal());
+        c2001.setThermal(calcProps.getThermal());
+        c2001.setThermalKcal(calcProps.getThermalKcal());
+        c2001.setEnthalpy(calcProps.getEnthalpy());
+        c2001.setEnthalpyKcal(calcProps.getEnthalpyKcal());
+        c2001.setEntropy(calcProps.getEntropy());
+        c2001.setEntropyKcal(calcProps.getEntropyKcal());
+        c2001.setGibbs(calcProps.getGibbs());
+        c2001.setGibbsKcal(calcProps.getGibbsKcal());
+        c2001.setOrgSym(calcProps.getOrbSym());
+        c2001.setDipole(calcProps.getDipole());
+        c2001.setFreq(calcProps.getFreq());
+        c2001.setAtomWeigh(calcProps.getAtomWeigh());
+        c2001.setS2(calcProps.getS2());
+        c2001.setCodeVersion(calcProps.getCodeVersion());
+        c2001.setCalcMachine(calcProps.getCalcMachine());
+        c2001.setCalcBy(calcProps.getCalcBy());
+        c2001.setMemCost(calcProps.getMemCost());
+        c2001.setTimeCost(calcProps.getTimeCost());
+        c2001.setCPUTime(calcProps.getCPUTime());
+        c2001.setConvergenece(calcProps.getConvergenece());
+        c2001.setOtherinfo(calcProps.getOtherinfo());
+        c2001.setComments(calcProps.getComments());
+        c2001.setNAtom(calcProps.getNAtom());
+        c2001.setNmo(calcProps.getNmo());
+        c2001.setNBasis(calcProps.getNBasis());
+    }
+
+    @Override
+    public void deleteCalcProps(CalcPropsRequest request, 
StreamObserver<CalcProps> responseObserver) {
+//        super.deleteCalcProps(request, responseObserver);
+    CalcProps calcProps = request.getCalcProp();
+    CalcPropsEntity c2001 = (CalcPropsEntity) 
repo1.findByPDB(calcProps.getSDF());
+    repo1.delete(c2001);
+    responseObserver.onNext(calcProps);
+    responseObserver.onCompleted();
+    }
+
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsRepo.java
 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsRepo.java
new file mode 100644
index 00000000..aa084e0a
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calcprops/CalcPropsRepo.java
@@ -0,0 +1,8 @@
+package com.smiles.calcprops;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface CalcPropsRepo extends MongoRepository<CalcPropsEntity, 
String> {
+
+    public CalcPropsEntity findByPDB(String PDB);
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyEntity.java
 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyEntity.java
new file mode 100644
index 00000000..2de9c1ea
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyEntity.java
@@ -0,0 +1,123 @@
+package com.smiles.calctopology;
+
+import org.springframework.data.annotation.Id;
+
+import java.util.List;
+
+public class CalcTopologyEntity {
+    @Id
+    private String id;
+    private List<String> symbols;
+    private List<String> geometry;
+    private double mol_charge;
+    private long mol_multiplicity;
+    private String name;
+    private String comment;
+    private List<Long> mass_numbers;
+    private List<Double> masses;
+    private List<Double> atomic_number;
+    private List<String> atomic_labels;
+
+    public CalcTopologyEntity(List<String> symbols, List<String> geometry, 
double mol_charge, long mol_multiplicity, String name, String comment, 
List<Long> mass_numbers, List<Double> masses, List<Double> atomic_number, 
List<String> atomic_labels) {
+        this.symbols = symbols;
+        this.geometry = geometry;
+        this.mol_charge = mol_charge;
+        this.mol_multiplicity = mol_multiplicity;
+        this.name = name;
+        this.comment = comment;
+        this.mass_numbers = mass_numbers;
+        this.masses = masses;
+        this.atomic_number = atomic_number;
+        this.atomic_labels = atomic_labels;
+    }
+
+    public List<String> getSymbols() {
+        return symbols;
+    }
+
+    public CalcTopologyEntity setSymbols(List<String> symbols) {
+        this.symbols = symbols;
+        return this;
+    }
+
+    public List<String> getGeometry() {
+        return geometry;
+    }
+
+    public CalcTopologyEntity setGeometry(List<String> geometry) {
+        this.geometry = geometry;
+        return this;
+    }
+
+    public double getMol_charge() {
+        return mol_charge;
+    }
+
+    public CalcTopologyEntity setMol_charge(double mol_charge) {
+        this.mol_charge = mol_charge;
+        return this;
+    }
+
+    public long getMol_multiplicity() {
+        return mol_multiplicity;
+    }
+
+    public CalcTopologyEntity setMol_multiplicity(long mol_multiplicity) {
+        this.mol_multiplicity = mol_multiplicity;
+        return this;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public CalcTopologyEntity setName(String name) {
+        this.name = name;
+        return this;
+    }
+
+    public String getComment() {
+        return comment;
+    }
+
+    public CalcTopologyEntity setComment(String comment) {
+        this.comment = comment;
+        return this;
+    }
+
+    public List<Long> getMass_numbers() {
+        return mass_numbers;
+    }
+
+    public CalcTopologyEntity setMass_numbers(List<Long> mass_numbers) {
+        this.mass_numbers = mass_numbers;
+        return this;
+    }
+
+    public List<Double> getMasses() {
+        return masses;
+    }
+
+    public CalcTopologyEntity setMasses(List<Double> masses) {
+        this.masses = masses;
+        return this;
+    }
+
+    public List<Double> getAtomic_number() {
+        return atomic_number;
+    }
+
+    public CalcTopologyEntity setAtomic_number(List<Double> atomic_number) {
+        this.atomic_number = atomic_number;
+        return this;
+    }
+
+    public List<String> getAtomic_labels() {
+        return atomic_labels;
+    }
+
+    public CalcTopologyEntity setAtomic_labels(List<String> atomic_labels) {
+        this.atomic_labels = atomic_labels;
+        return this;
+    }
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyImpl.java
 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyImpl.java
new file mode 100644
index 00000000..a12aa07d
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyImpl.java
@@ -0,0 +1,52 @@
+package com.smiles.calctopology;
+
+import com.smiles.CalcTopology;
+import com.smiles.CalcTopologyRequest;
+import com.smiles.CalcTopologyServiceGrpc;
+import com.smiles.SpringContext;
+import io.grpc.stub.StreamObserver;
+
+import javax.swing.*;
+
+public class CalcTopologyImpl extends 
CalcTopologyServiceGrpc.CalcTopologyServiceImplBase {
+
+    CalcTopologyRepo repo = SpringContext.getBean((CalcTopologyRepo.class));
+    @Override
+    public void getCalcTopology(CalcTopologyRequest request, 
StreamObserver<CalcTopology> responseObserver) {
+//        super.getCalcTopology(request, responseObserver);
+        System.out.println(request.getAllFields());
+
+        CalcTopologyEntity calcTopology = 
repo.findBySymbols(request.getCalcTopologyQuery());
+        System.out.println(calcTopology.toString());
+
+        CalcTopology reply = CalcTopology.newBuilder()
+                .setSymbols(calcTopology.getSymbols())
+                .setGeometry(calcTopology.getGeometry())
+                .setMolCharge(calcTopology.getMol_charge())
+                .setMolMultiplicity(calcTopology.getMol_multiplicity())
+                .setName(calcTopology.getName())
+                .setComment(calcTopology.getComment())
+                .setMassNumbers(calcTopology.getMass_numbers())
+                .setMasses(calcTopology.getMasses())
+                .setAtomicNumber(calcTopology.getAtomic_number())
+                .setAtomLabels(calcTopology.getAtomic_labels()).build();
+    }
+
+    @Override
+    public void createCalcTopology(CalcTopologyRequest request, 
StreamObserver<CalcTopology> responseObserver) {
+//        super.createCalcTopology(request, responseObserver);
+        CalcTopology calcTopology = request.getCalcTopology();
+        System.out.println(request.getAllFields());
+        
+    }
+
+    @Override
+    public void updateCalcTopology(CalcTopologyRequest request, 
StreamObserver<CalcTopology> responseObserver) {
+        super.updateCalcTopology(request, responseObserver);
+    }
+
+    @Override
+    public void deleteCalcTopology(CalcTopologyRequest request, 
StreamObserver<CalcTopology> responseObserver) {
+        super.deleteCalcTopology(request, responseObserver);
+    }
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyRepo.java
 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyRepo.java
new file mode 100644
index 00000000..a4fd1b98
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/calctopology/CalcTopologyRepo.java
@@ -0,0 +1,10 @@
+package com.smiles.calctopology;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+import java.util.List;
+
+public interface CalcTopologyRepo extends MongoRepository<CalcTopologyEntity, 
String> {
+
+    public CalcTopologyEntity findBySymbols(List<String> symbols);
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeEntity.java 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeEntity.java
new file mode 100644
index 00000000..4ed2b8d8
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeEntity.java
@@ -0,0 +1,761 @@
+package com.smiles.molData;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+@Document("molecule")
+public class MoleculeEntity {
+
+    @Id
+    private String id;
+    private String cas_nr;
+    private String smiles;
+    private String smiles_stereo;
+    private String inchi;
+    private String molfile_blob_source;
+    private String emp_formula;
+    private String emp_formula_sort;
+    private String emp_formula_source;
+    private Double mw;
+    private Double mw_monoiso;
+    private Double rdb;
+    private String mw_source;
+    private String validated_by;
+    private String journal;
+    private String auth_of_intr;
+
+    private String jour_cit;
+    private String year_publ;
+    private String doi_link;
+    private String comp_class;
+    private String cuniq;
+    private String calc_perf;
+    private String org_met;
+    private long mol_chrg;
+    private String state_ofmat;
+    private String color_white;
+    private String color_uv;
+    private Double absorb_max;
+    private String solvent_ae;
+    private Double absorb;
+    private Double conc;
+    private Double extinc;
+    private Double emis_max;
+    private Double temp_abs;
+    private Double emis_qy;
+    private Double temp_ems;
+    private Double lifetime;
+    private Double temp_cv;
+    private Double reduc_pot;
+    private String hw_or_pk_rp;
+    private Double oxid_pot;
+    private String hw_or_pk_op;
+    private String solvent_cv;
+    private String electrolyte;
+    private String ref_electrd;
+    private String inter_thngs;
+    private Double density_20;
+    private String density_20_source;
+    private Double default_warn_level;
+    private Double n_20;
+    private String n_20_source;
+    private Double mp_low;
+    private Double mp_high;
+    private String mp_source;
+    private Double bp_low;
+    private Double bp_high;
+    private Double bp_press;
+    private String press_unit;
+    private String bp_source;
+    private String safety_r;
+    private String safety_h;
+    private String safety_s;
+    private String safety_p;
+    private String safety_text;
+    private String safety_sym;
+    private String safety_sym_ghs;
+    private String safety_source;
+    private String comment_mol;
+
+    public MoleculeEntity(String cas_nr, String smiles, String smiles_stereo, 
String inchi, String molfile_blob_source, String emp_formula, String 
emp_formula_sort, String emp_formula_source, Double mw, Double mw_monoiso, 
Double rdb, String mw_source, String validated_by, String journal, String 
auth_of_intr, String jour_cit, String year_publ, String doi_link, String 
comp_class, String cuniq, String calc_perf, String org_met, long mol_chrg, 
String state_ofmat, String color_white, String c [...]
+        this.cas_nr = cas_nr;
+        this.smiles = smiles;
+        this.smiles_stereo = smiles_stereo;
+        this.inchi = inchi;
+        this.molfile_blob_source = molfile_blob_source;
+        this.emp_formula = emp_formula;
+        this.emp_formula_sort = emp_formula_sort;
+        this.emp_formula_source = emp_formula_source;
+        this.mw = mw;
+        this.mw_monoiso = mw_monoiso;
+        this.rdb = rdb;
+        this.mw_source = mw_source;
+        this.validated_by = validated_by;
+        this.journal = journal;
+        this.auth_of_intr = auth_of_intr;
+        this.jour_cit = jour_cit;
+        this.year_publ = year_publ;
+        this.doi_link = doi_link;
+        this.comp_class = comp_class;
+        this.cuniq = cuniq;
+        this.calc_perf = calc_perf;
+        this.org_met = org_met;
+        this.mol_chrg = mol_chrg;
+        this.state_ofmat = state_ofmat;
+        this.color_white = color_white;
+        this.color_uv = color_uv;
+        this.absorb_max = absorb_max;
+        this.solvent_ae = solvent_ae;
+        this.absorb = absorb;
+        this.conc = conc;
+        this.extinc = extinc;
+        this.emis_max = emis_max;
+        this.temp_abs = temp_abs;
+        this.emis_qy = emis_qy;
+        this.temp_ems = temp_ems;
+        this.lifetime = lifetime;
+        this.temp_cv = temp_cv;
+        this.reduc_pot = reduc_pot;
+        this.hw_or_pk_rp = hw_or_pk_rp;
+        this.oxid_pot = oxid_pot;
+        this.hw_or_pk_op = hw_or_pk_op;
+        this.solvent_cv = solvent_cv;
+        this.electrolyte = electrolyte;
+        this.ref_electrd = ref_electrd;
+        this.inter_thngs = inter_thngs;
+        this.density_20 = density_20;
+        this.density_20_source = density_20_source;
+        this.default_warn_level = default_warn_level;
+        this.n_20 = n_20;
+        this.n_20_source = n_20_source;
+        this.mp_low = mp_low;
+        this.mp_high = mp_high;
+        this.mp_source = mp_source;
+        this.bp_low = bp_low;
+        this.bp_high = bp_high;
+        this.bp_press = bp_press;
+        this.press_unit = press_unit;
+        this.bp_source = bp_source;
+        this.safety_r = safety_r;
+        this.safety_h = safety_h;
+        this.safety_s = safety_s;
+        this.safety_p = safety_p;
+        this.safety_text = safety_text;
+        this.safety_sym = safety_sym;
+        this.safety_sym_ghs = safety_sym_ghs;
+        this.safety_source = safety_source;
+        this.comment_mol = comment_mol;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public MoleculeEntity setId(String id) {
+        this.id = id;
+        return this;
+    }
+
+    public String getCas_nr() {
+        return cas_nr;
+    }
+
+    public MoleculeEntity setCas_nr(String cas_nr) {
+        this.cas_nr = cas_nr;
+        return this;
+    }
+
+    public String getSmiles() {
+        return smiles;
+    }
+
+    public MoleculeEntity setSmiles(String smiles) {
+        this.smiles = smiles;
+        return this;
+    }
+
+    public String getSmiles_stereo() {
+        return smiles_stereo;
+    }
+
+    public MoleculeEntity setSmiles_stereo(String smiles_stereo) {
+        this.smiles_stereo = smiles_stereo;
+        return this;
+    }
+
+    public String getInchi() {
+        return inchi;
+    }
+
+    public MoleculeEntity setInchi(String inchi) {
+        this.inchi = inchi;
+        return this;
+    }
+
+    public String getMolfile_blob_source() {
+        return molfile_blob_source;
+    }
+
+    public MoleculeEntity setMolfile_blob_source(String molfile_blob_source) {
+        this.molfile_blob_source = molfile_blob_source;
+        return this;
+    }
+
+    public String getEmp_formula() {
+        return emp_formula;
+    }
+
+    public MoleculeEntity setEmp_formula(String emp_formula) {
+        this.emp_formula = emp_formula;
+        return this;
+    }
+
+    public String getEmp_formula_sort() {
+        return emp_formula_sort;
+    }
+
+    public MoleculeEntity setEmp_formula_sort(String emp_formula_sort) {
+        this.emp_formula_sort = emp_formula_sort;
+        return this;
+    }
+
+    public String getEmp_formula_source() {
+        return emp_formula_source;
+    }
+
+    public MoleculeEntity setEmp_formula_source(String emp_formula_source) {
+        this.emp_formula_source = emp_formula_source;
+        return this;
+    }
+
+    public Double getMw() {
+        return mw;
+    }
+
+    public MoleculeEntity setMw(Double mw) {
+        this.mw = mw;
+        return this;
+    }
+
+    public Double getMw_monoiso() {
+        return mw_monoiso;
+    }
+
+    public MoleculeEntity setMw_monoiso(Double mw_monoiso) {
+        this.mw_monoiso = mw_monoiso;
+        return this;
+    }
+
+    public Double getRdb() {
+        return rdb;
+    }
+
+    public MoleculeEntity setRdb(Double rdb) {
+        this.rdb = rdb;
+        return this;
+    }
+
+    public String getMw_source() {
+        return mw_source;
+    }
+
+    public MoleculeEntity setMw_source(String mw_source) {
+        this.mw_source = mw_source;
+        return this;
+    }
+
+    public String getValidated_by() {
+        return validated_by;
+    }
+
+    public MoleculeEntity setValidated_by(String validated_by) {
+        this.validated_by = validated_by;
+        return this;
+    }
+
+    public String getJournal() {
+        return journal;
+    }
+
+    public MoleculeEntity setJournal(String journal) {
+        this.journal = journal;
+        return this;
+    }
+
+    public String getAuth_of_intr() {
+        return auth_of_intr;
+    }
+
+    public MoleculeEntity setAuth_of_intr(String auth_of_intr) {
+        this.auth_of_intr = auth_of_intr;
+        return this;
+    }
+
+    public String getJour_cit() {
+        return jour_cit;
+    }
+
+    public MoleculeEntity setJour_cit(String jour_cit) {
+        this.jour_cit = jour_cit;
+        return this;
+    }
+
+    public String getYear_publ() {
+        return year_publ;
+    }
+
+    public MoleculeEntity setYear_publ(String year_publ) {
+        this.year_publ = year_publ;
+        return this;
+    }
+
+    public String getDoi_link() {
+        return doi_link;
+    }
+
+    public MoleculeEntity setDoi_link(String doi_link) {
+        this.doi_link = doi_link;
+        return this;
+    }
+
+    public String getComp_class() {
+        return comp_class;
+    }
+
+    public MoleculeEntity setComp_class(String comp_class) {
+        this.comp_class = comp_class;
+        return this;
+    }
+
+    public String getCuniq() {
+        return cuniq;
+    }
+
+    public MoleculeEntity setCuniq(String cuniq) {
+        this.cuniq = cuniq;
+        return this;
+    }
+
+    public String getCalc_perf() {
+        return calc_perf;
+    }
+
+    public MoleculeEntity setCalc_perf(String calc_perf) {
+        this.calc_perf = calc_perf;
+        return this;
+    }
+
+    public String getOrg_met() {
+        return org_met;
+    }
+
+    public MoleculeEntity setOrg_met(String org_met) {
+        this.org_met = org_met;
+        return this;
+    }
+
+    public long getMol_chrg() {
+        return mol_chrg;
+    }
+
+    public MoleculeEntity setMol_chrg(long mol_chrg) {
+        this.mol_chrg = mol_chrg;
+        return this;
+    }
+
+    public String getState_ofmat() {
+        return state_ofmat;
+    }
+
+    public MoleculeEntity setState_ofmat(String state_ofmat) {
+        this.state_ofmat = state_ofmat;
+        return this;
+    }
+
+    public String getColor_white() {
+        return color_white;
+    }
+
+    public MoleculeEntity setColor_white(String color_white) {
+        this.color_white = color_white;
+        return this;
+    }
+
+    public String getColor_uv() {
+        return color_uv;
+    }
+
+    public MoleculeEntity setColor_uv(String color_uv) {
+        this.color_uv = color_uv;
+        return this;
+    }
+
+    public Double getAbsorb_max() {
+        return absorb_max;
+    }
+
+    public MoleculeEntity setAbsorb_max(Double absorb_max) {
+        this.absorb_max = absorb_max;
+        return this;
+    }
+
+    public String getSolvent_ae() {
+        return solvent_ae;
+    }
+
+    public MoleculeEntity setSolvent_ae(String solvent_ae) {
+        this.solvent_ae = solvent_ae;
+        return this;
+    }
+
+    public Double getAbsorb() {
+        return absorb;
+    }
+
+    public MoleculeEntity setAbsorb(Double absorb) {
+        this.absorb = absorb;
+        return this;
+    }
+
+    public Double getConc() {
+        return conc;
+    }
+
+    public MoleculeEntity setConc(Double conc) {
+        this.conc = conc;
+        return this;
+    }
+
+    public Double getExtinc() {
+        return extinc;
+    }
+
+    public MoleculeEntity setExtinc(Double extinc) {
+        this.extinc = extinc;
+        return this;
+    }
+
+    public Double getEmis_max() {
+        return emis_max;
+    }
+
+    public MoleculeEntity setEmis_max(Double emis_max) {
+        this.emis_max = emis_max;
+        return this;
+    }
+
+    public Double getTemp_abs() {
+        return temp_abs;
+    }
+
+    public MoleculeEntity setTemp_abs(Double temp_abs) {
+        this.temp_abs = temp_abs;
+        return this;
+    }
+
+    public Double getEmis_qy() {
+        return emis_qy;
+    }
+
+    public MoleculeEntity setEmis_qy(Double emis_qy) {
+        this.emis_qy = emis_qy;
+        return this;
+    }
+
+    public Double getTemp_ems() {
+        return temp_ems;
+    }
+
+    public MoleculeEntity setTemp_ems(Double temp_ems) {
+        this.temp_ems = temp_ems;
+        return this;
+    }
+
+    public Double getLifetime() {
+        return lifetime;
+    }
+
+    public MoleculeEntity setLifetime(Double lifetime) {
+        this.lifetime = lifetime;
+        return this;
+    }
+
+    public Double getTemp_cv() {
+        return temp_cv;
+    }
+
+    public MoleculeEntity setTemp_cv(Double temp_cv) {
+        this.temp_cv = temp_cv;
+        return this;
+    }
+
+    public Double getReduc_pot() {
+        return reduc_pot;
+    }
+
+    public MoleculeEntity setReduc_pot(Double reduc_pot) {
+        this.reduc_pot = reduc_pot;
+        return this;
+    }
+
+    public String getHw_or_pk_rp() {
+        return hw_or_pk_rp;
+    }
+
+    public MoleculeEntity setHw_or_pk_rp(String hw_or_pk_rp) {
+        this.hw_or_pk_rp = hw_or_pk_rp;
+        return this;
+    }
+
+    public Double getOxid_pot() {
+        return oxid_pot;
+    }
+
+    public MoleculeEntity setOxid_pot(Double oxid_pot) {
+        this.oxid_pot = oxid_pot;
+        return this;
+    }
+
+    public String getHw_or_pk_op() {
+        return hw_or_pk_op;
+    }
+
+    public MoleculeEntity setHw_or_pk_op(String hw_or_pk_op) {
+        this.hw_or_pk_op = hw_or_pk_op;
+        return this;
+    }
+
+    public String getSolvent_cv() {
+        return solvent_cv;
+    }
+
+    public MoleculeEntity setSolvent_cv(String solvent_cv) {
+        this.solvent_cv = solvent_cv;
+        return this;
+    }
+
+    public String getElectrolyte() {
+        return electrolyte;
+    }
+
+    public MoleculeEntity setElectrolyte(String electrolyte) {
+        this.electrolyte = electrolyte;
+        return this;
+    }
+
+    public String getRef_electrd() {
+        return ref_electrd;
+    }
+
+    public MoleculeEntity setRef_electrd(String ref_electrd) {
+        this.ref_electrd = ref_electrd;
+        return this;
+    }
+
+    public String getInter_thngs() {
+        return inter_thngs;
+    }
+
+    public MoleculeEntity setInter_thngs(String inter_thngs) {
+        this.inter_thngs = inter_thngs;
+        return this;
+    }
+
+    public Double getDensity_20() {
+        return density_20;
+    }
+
+    public MoleculeEntity setDensity_20(Double density_20) {
+        this.density_20 = density_20;
+        return this;
+    }
+
+    public String getDensity_20_source() {
+        return density_20_source;
+    }
+
+    public MoleculeEntity setDensity_20_source(String density_20_source) {
+        this.density_20_source = density_20_source;
+        return this;
+    }
+
+    public Double getDefault_warn_level() {
+        return default_warn_level;
+    }
+
+    public MoleculeEntity setDefault_warn_level(Double default_warn_level) {
+        this.default_warn_level = default_warn_level;
+        return this;
+    }
+
+    public Double getN_20() {
+        return n_20;
+    }
+
+    public MoleculeEntity setN_20(Double n_20) {
+        this.n_20 = n_20;
+        return this;
+    }
+
+    public String getN_20_source() {
+        return n_20_source;
+    }
+
+    public MoleculeEntity setN_20_source(String n_20_source) {
+        this.n_20_source = n_20_source;
+        return this;
+    }
+
+    public Double getMp_low() {
+        return mp_low;
+    }
+
+    public MoleculeEntity setMp_low(Double mp_low) {
+        this.mp_low = mp_low;
+        return this;
+    }
+
+    public Double getMp_high() {
+        return mp_high;
+    }
+
+    public MoleculeEntity setMp_high(Double mp_high) {
+        this.mp_high = mp_high;
+        return this;
+    }
+
+    public String getMp_source() {
+        return mp_source;
+    }
+
+    public MoleculeEntity setMp_source(String mp_source) {
+        this.mp_source = mp_source;
+        return this;
+    }
+
+    public Double getBp_low() {
+        return bp_low;
+    }
+
+    public MoleculeEntity setBp_low(Double bp_low) {
+        this.bp_low = bp_low;
+        return this;
+    }
+
+    public Double getBp_high() {
+        return bp_high;
+    }
+
+    public MoleculeEntity setBp_high(Double bp_high) {
+        this.bp_high = bp_high;
+        return this;
+    }
+
+    public Double getBp_press() {
+        return bp_press;
+    }
+
+    public MoleculeEntity setBp_press(Double bp_press) {
+        this.bp_press = bp_press;
+        return this;
+    }
+
+    public String getPress_unit() {
+        return press_unit;
+    }
+
+    public MoleculeEntity setPress_unit(String press_unit) {
+        this.press_unit = press_unit;
+        return this;
+    }
+
+    public String getBp_source() {
+        return bp_source;
+    }
+
+    public MoleculeEntity setBp_source(String bp_source) {
+        this.bp_source = bp_source;
+        return this;
+    }
+
+    public String getSafety_r() {
+        return safety_r;
+    }
+
+    public MoleculeEntity setSafety_r(String safety_r) {
+        this.safety_r = safety_r;
+        return this;
+    }
+
+    public String getSafety_h() {
+        return safety_h;
+    }
+
+    public MoleculeEntity setSafety_h(String safety_h) {
+        this.safety_h = safety_h;
+        return this;
+    }
+
+    public String getSafety_s() {
+        return safety_s;
+    }
+
+    public MoleculeEntity setSafety_s(String safety_s) {
+        this.safety_s = safety_s;
+        return this;
+    }
+
+    public String getSafety_p() {
+        return safety_p;
+    }
+
+    public MoleculeEntity setSafety_p(String safety_p) {
+        this.safety_p = safety_p;
+        return this;
+    }
+
+    public String getSafety_text() {
+        return safety_text;
+    }
+
+    public MoleculeEntity setSafety_text(String safety_text) {
+        this.safety_text = safety_text;
+        return this;
+    }
+
+    public String getSafety_sym() {
+        return safety_sym;
+    }
+
+    public MoleculeEntity setSafety_sym(String safety_sym) {
+        this.safety_sym = safety_sym;
+        return this;
+    }
+
+    public String getSafety_sym_ghs() {
+        return safety_sym_ghs;
+    }
+
+    public MoleculeEntity setSafety_sym_ghs(String safety_sym_ghs) {
+        this.safety_sym_ghs = safety_sym_ghs;
+        return this;
+    }
+
+    public String getSafety_source() {
+        return safety_source;
+    }
+
+    public MoleculeEntity setSafety_source(String safety_source) {
+        this.safety_source = safety_source;
+        return this;
+    }
+
+    public String getComment_mol() {
+        return comment_mol;
+    }
+
+    public MoleculeEntity setComment_mol(String comment_mol) {
+        this.comment_mol = comment_mol;
+        return this;
+    }
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeImpl.java 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeImpl.java
new file mode 100644
index 00000000..782ed68c
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeImpl.java
@@ -0,0 +1,97 @@
+package com.smiles.molData;
+
+import com.smiles.Molecule;
+import com.smiles.MoleculeRequest;
+import com.smiles.MoleculeServiceGrpc;
+import com.smiles.SpringContext;
+import io.grpc.stub.StreamObserver;
+
+public class MoleculeImpl extends MoleculeServiceGrpc.MoleculeServiceImplBase {
+    MoleculeRepo repo = SpringContext.getBean(MoleculeRepo.class);
+
+    @Override
+    public void getMolecule(MoleculeRequest request, StreamObserver<Molecule> 
responseObserver) {
+//        super.getMolecule(request, responseObserver);
+        MoleculeEntity molecule = 
repo.findBySmiles(request.getMoleculeQuery());
+        System.out.println(molecule.toString());
+        Molecule reply = Molecule.newBuilder().setCasNr(molecule.getCas_nr())
+                
.setSmiles(molecule.getSmiles()).setSmilesStereo(molecule.getSmiles_stereo())
+                
.setInchi(molecule.getInchi()).setMolfileBlobSource(molecule.getMolfile_blob_source())
+                
.setEmpFormula(molecule.getEmp_formula()).setEmpFormulaSort(molecule.getEmp_formula_sort())
+                .setMw(molecule.getMw()).setMwMonoiso(molecule.getMw_monoiso())
+                .setRdb(molecule.getRdb()).setMwSource(molecule.getMw_source())
+                
.setValidatedBy(molecule.getValidated_by()).setJournal(molecule.getJournal())
+                
.setAuthOfIntr(molecule.getAuth_of_intr()).setJourCit(molecule.getJour_cit())
+                
.setYearPubl(molecule.getYear_publ()).setDoiLink(molecule.getDoi_link())
+                
.setCompClass(molecule.getComp_class()).setCuniq(molecule.getCuniq())
+                
.setCalcPerf(molecule.getCalc_perf()).setOrgMet(molecule.getOrg_met())
+                
.setMolChrg(molecule.getMol_chrg()).setStateOfmat(molecule.getState_ofmat())
+                
.setColorWhite(molecule.getColor_white()).setColorUv(molecule.getColor_uv())
+                
.setAbsorbMax(molecule.getAbsorb_max()).setSolventAe(molecule.getSolvent_ae())
+                
.setAbsorb(molecule.getAbsorb()).setConc(molecule.getConc()).setExtinc(molecule.getExtinc())
+                
.setEmisMax(molecule.getEmis_max()).setTempAbs(molecule.getTemp_abs())
+                
.setEmisQy(molecule.getEmis_qy()).setLifetime(molecule.getLifetime())
+                
.setTempCv(molecule.getTemp_cv()).setReducPot(molecule.getReduc_pot())
+                
.setHwOrPkRp(molecule.getHw_or_pk_rp()).setSolventCv(molecule.getSolvent_cv())
+                
.setElectrolyte(molecule.getElectrolyte()).setRefElectrd(molecule.getRef_electrd())
+                
.setInterThngs(molecule.getInter_thngs()).setDensity20(molecule.getDensity_20())
+                
.setDensity20Source(molecule.getDensity_20_source()).setDefaultWarnLevel(molecule.getDefault_warn_level())
+                
.setN20(molecule.getN_20()).setN20Source(molecule.getN_20_source())
+                
.setMpLow(molecule.getMp_low()).setMpHigh(molecule.getMp_high())
+                
.setMpSource(molecule.getMp_source()).setBpLow(molecule.getBp_low())
+                
.setBpHigh(molecule.getBp_high()).setBpPress(molecule.getBp_press())
+                
.setPressUnit(molecule.getPress_unit()).setBpSource(molecule.getBp_source())
+                
.setSafetyR(molecule.getSafety_r()).setSafetyH(molecule.getSafety_h())
+                
.setSafetyS(molecule.getSafety_s()).setSafetyP(molecule.getSafety_p())
+                
.setSafetyText(molecule.getSafety_text()).setSafetySym(molecule.getSafety_sym())
+                
.setSafetySymGhs(molecule.getSafety_sym_ghs()).setSafetySource(molecule.getSafety_source())
+                .setCommentMol(molecule.getComment_mol()).build();
+        responseObserver.onNext(reply);
+        responseObserver.onCompleted();
+    }
+
+    @Override
+    public void createMolecule(MoleculeRequest request, 
StreamObserver<Molecule> responseObserver) {
+//        super.createMolecule(request, responseObserver);
+        Molecule molecule = request.getMolecule();
+        System.out.println(request.getAllFields());
+        MoleculeEntity c4001 = new MoleculeEntity(molecule.getCasNr(),
+                molecule.getSmiles(), molecule.getSmilesStereo(),
+                molecule.getInchi(), molecule.getMolfileBlobSource(),
+                molecule.getEmpFormula(), molecule.getEmpFormulaSort(),
+                molecule.getEmpFormulaSource(), molecule.getMw(), 
molecule.getMwMonoiso(),
+                molecule.getRdb(), molecule.getMwSource(), 
molecule.getValidatedBy(),
+                molecule.getJournal(), molecule.getAuthOfIntr(), 
molecule.getJourCit(),
+                molecule.getYearPubl(), molecule.getDoiLink(), 
molecule.getCompClass(),
+                molecule.getCuniq(), molecule.getCalcPerf(), 
molecule.getOrgMet(),
+                molecule.getMolChrg(), molecule.getStateOfmat(), 
molecule.getColorWhite(),
+                molecule.getColorUv(), molecule.getAbsorbMax(), 
molecule.getSolventAe(),
+                molecule.getAbsorb(), molecule.getConc(), 
molecule.getExtinc(), molecule.getEmisMax(),
+                molecule.getTempAbs(), molecule.getEmisQy(), 
molecule.getTempEms(), molecule.getLifetime(),
+                molecule.getTempCv(), molecule.getReducPot(), 
molecule.getHwOrPkRp(),
+                molecule.getOxidPot(), molecule.getHwOrPkOp(), 
molecule.getSolventCv(),
+                molecule.getElectrolyte(), molecule.getRefElectrd(), 
molecule.getInterThngs(),
+                molecule.getDensity20(), molecule.getDensity20Source(), 
molecule.getDefaultWarnLevel(),
+                molecule.getN20(), molecule.getN20Source(), 
molecule.getMpLow(),
+                molecule.getMpHigh(), molecule.getMpSource(), 
molecule.getBpLow(),
+                molecule.getBpHigh(), molecule.getBpPress(), 
molecule.getPressUnit(),
+                molecule.getBpSource(), molecule.getSafetyR(), 
molecule.getSafetyH(), molecule.getSafetyS(),
+                molecule.getSafetyP(), molecule.getSafetyText(), 
molecule.getSafetySym(),
+                molecule.getSafetySymGhs(), molecule.getSafetySource(), 
molecule.getCommentMol());
+        repo.save(c4001);
+        responseObserver.onNext(molecule);
+        responseObserver.onCompleted();
+
+
+    }
+
+    @Override
+    public void updateMolecule(MoleculeRequest request, 
StreamObserver<Molecule> responseObserver) {
+        super.updateMolecule(request, responseObserver);
+    }
+
+    @Override
+    public void deleteMolecule(MoleculeRequest request, 
StreamObserver<Molecule> responseObserver) {
+        super.deleteMolecule(request, responseObserver);
+    }
+}
diff --git 
a/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeRepo.java 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeRepo.java
new file mode 100644
index 00000000..028b4fb5
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/main/java/com/smiles/molData/MoleculeRepo.java
@@ -0,0 +1,8 @@
+package com.smiles.molData;
+
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+public interface MoleculeRepo extends MongoRepository<MoleculeEntity, String> {
+
+    MoleculeEntity findBySmiles(String smiles);
+}
diff --git a/gsoc2022/smilesdb/Server/src/main/proto/calc_info.proto 
b/gsoc2022/smilesdb/Server/src/main/proto/calc_info.proto
new file mode 100644
index 00000000..9f77a90a
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/src/main/proto/calc_info.proto
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+syntax = "proto3";
+
+package com.smiles;
+option java_multiple_files = true;
+
+message CalcInfo{
+  //QcSchema-Properties_Info
+  string id = 8;
+  int64 nbasis = 1; // The number of basis functions for the computation.      
number
+  int64 nmo = 2; //    The number of molecular orbitals for the computation.   
number
+  int64 nalpha = 3;//  The number of alpha electrons in the computation.       
number
+  int64 nbeta = 4;//   The number of beta electrons in the computation.        
number
+  int64 natom = 5; //  The number of atoms in the computation.         number
+  double energy = 6;//         The energy of the requested method, identical 
to return_value for energy computations. number
+  string SMILES = 7;
+}
+
+message CalcInfoRequest {
+  string calcInfoQuery=1;
+  CalcInfo calcInfo = 2;
+}
+
+
+service CalcInfoService {
+  rpc GetCalcInfo(CalcInfoRequest) returns (CalcInfo) {}
+  rpc CreateCalcInfo(CalcInfoRequest) returns (CalcInfo){}
+  rpc UpdateCalcInfo(CalcInfoRequest) returns (CalcInfo){}
+  rpc DeleteCalcInfo(CalcInfoRequest) returns (CalcInfo){}
+}
diff --git a/gsoc2022/smilesdb/Server/src/main/proto/calc_properties.proto 
b/gsoc2022/smilesdb/Server/src/main/proto/calc_properties.proto
new file mode 100644
index 00000000..1c7bb386
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/src/main/proto/calc_properties.proto
@@ -0,0 +1,117 @@
+
+syntax = "proto3";
+
+package com.smiles;
+option java_multiple_files = true;
+
+message CalcProps{
+  //CCLib-Properties
+  string InChI = 1;
+  string InChIKey = 2;
+  string SMILES = 3;
+  string CanonicalSMILES = 4;
+  string PDB = 5;
+  string SDF = 6;
+  string ParsedBy = 7;
+  string Formula = 8;
+  int64 Charge = 9;
+  int64 Multiplicity = 10;
+  string Keywords = 11;
+  string CalcType = 12;
+  string Methods = 13;
+  string Basis = 14;
+  int64 NumBasis = 15;
+
+  int64 NumFC = 16;
+  int64 NumVirt = 17;
+  string JobStatus = 18;
+  string FinTime = 19;
+  string InitGeom = 20;
+  string FinalGeom = 21;
+  string PG = 22;
+  string ElecSym = 23;
+  int64 NImag = 24;
+  double Energy = 25;
+  double EnergyKcal = 26;
+  double ZPE = 27;
+  double ZPEKcal = 28;
+  double HF = 29;
+  double HFKcal = 30;
+  double Thermal = 31;
+  double ThermalKcal = 32;
+  double Enthalpy = 33;
+  double EnthalpyKcal = 34;
+  double Entropy = 35;
+  double EntropyKcal = 36;
+  double Gibbs = 37;
+  double GibbsKcal = 38;
+  string OrbSym = 39;
+  double Dipole = 40;
+  double Freq = 41;
+  double AtomWeigh = 42;
+
+  //  TODO: Fix the data types
+  //  Conditions;
+  //  ReacGeom;
+  //  ProdGeom;
+  //  MulCharge;
+  //  NatCharge;
+
+
+  double S2 = 43;
+  string CodeVersion = 44;
+  string CalcMachine = 45;
+  string CalcBy = 46;
+  string MemCost = 47;
+  string TimeCost = 48;
+  string CPUTime = 49;
+  string Convergenece = 50;
+
+  //  TODO: Fix the data types
+  //  FullPath;
+  //  InputButGeom;
+
+
+  string Otherinfo = 51;
+  string Comments = 52;
+  int64 NAtom = 53;
+
+  //  TODO: Confirm with the data type (the double array)
+  //  double[] Homos = 54;
+  repeated double Homos = 54 [packed = true];
+
+  //  TODO: Confirm with the data type (the double array)
+  //  double[] ScfEnergies;
+  repeated double ScfEnergies = 55 [packed = true];
+
+  //  TODO: Fix the data types
+  //  CoreElectrons;
+
+  //  TODO: Confirm with the data type (the double array)
+  //  double[] MoEnergies;
+  repeated double MoEnergies = 56[packed = true];
+
+  //  TODO: Confirm with the data type (the double array)
+  //  double[] AtomCoords;
+  repeated double AtomCoords = 57[packed = true];
+
+  //  TODO: Fix the data type
+  //  ScfTargets;
+
+  int64 Nmo = 58;
+  int64 NBasis = 59;
+
+  //  TODO: Fix the data type
+  //AtomNos;
+}
+message CalcPropsRequest {
+  string calcPropsQuery=1;
+  CalcProps calcProp = 2;
+}
+
+service CalcPropsService {
+  rpc GetCalcProps(CalcPropsRequest) returns (CalcProps) {}
+  rpc CreateCalcProps(CalcPropsRequest) returns (CalcProps){}
+  rpc UpdateCalcProps(CalcPropsRequest) returns (CalcProps) {}
+  rpc DeleteCalcProps(CalcPropsRequest) returns (CalcProps) {}
+}
\ No newline at end of file
diff --git a/gsoc2022/smilesdb/Server/src/main/proto/calc_topology.proto 
b/gsoc2022/smilesdb/Server/src/main/proto/calc_topology.proto
new file mode 100644
index 00000000..3f55f6b9
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/src/main/proto/calc_topology.proto
@@ -0,0 +1,53 @@
+syntax = "proto3";
+package com.smiles;
+option java_multiple_files = true;
+
+message CalcTopology{
+
+  //QcSchema-Topology
+  //  string[] symbols; //(nat, ) atom symbols in title case.
+  repeated string symbols = 1;
+  //  double [] geometry; // (3 * nat, ) vector of XYZ coordinates [a0] of the 
atoms.
+  repeated string geometry = 2;
+  double mol_charge = 3; //The overall charge of the molecule.
+  int64 mol_multiplicity = 4; //The overall multiplicity of the molecule.
+  string name = 5; //The name of the molecule.
+  string comment = 6; //Any additional comment one would attach to the 
molecule.
+  //  int[] mass_numbers; //(nat, ) mass numbers for atoms, if known isotope, 
else -1.
+  repeated int64 mass_numbers = 7;
+  //  double[] masses; //(nat, ) atom masses [u]; canonical weights assumed if 
not given.
+  repeated double masses = 8;
+  //  double[] atomic_numbers; //(nat, ) atomic numbers, nuclear charge for 
atoms. Ghostedness should be indicated through ‘real’ field, not zeros here.
+  repeated double atomic_number = 9;
+  //  string[] atom_labels; //(nat, ) atom labels with any user tagging 
information.
+  repeated string atom_labels = 10;
+  //    atomic_numbers
+
+}
+
+message CalcTopologyRequest{
+  string calcTopologyQuery = 1;
+  CalcTopology calcTopology = 2;
+}
+
+service CalcTopologyService{
+  rpc GetCalcTopology(CalcTopologyRequest) returns (CalcTopology){}
+  rpc CreateCalcTopology(CalcTopologyRequest) returns (CalcTopology){}
+  rpc UpdateCalcTopology(CalcTopologyRequest) returns (CalcTopology){}
+  rpc DeleteCalcTopology(CalcTopologyRequest) returns (CalcTopology){}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/gsoc2022/smilesdb/Server/src/main/proto/molecule.proto 
b/gsoc2022/smilesdb/Server/src/main/proto/molecule.proto
new file mode 100644
index 00000000..7da9dd5d
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/src/main/proto/molecule.proto
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+//Complier: protoc --java_out=java/src/main/java proto_files\theater.proto
+
+
+
+
+syntax="proto3";
+package com.smiles;
+option java_multiple_files=true;
+//option java_multiple_files = true;
+//package org.apache.custos.user.profile.service;
+//option go_package = "./pb";
+
+message Molecule {
+  string  cas_nr = 1 ;                        //tinytext 
+  string  smiles = 2 ;                        //text. // Include
+  string  smiles_stereo = 3;                 // text 
+  string  inchi = 4 ;                  //text. // Include
+  //????  molfile_blob   ;                //medium-blob
+  //???  molecule_serialized ;            //mediumblob
+  string  molfile_blob_source = 6;           //tiny-text
+  string  emp_formula = 7;           //tinytext // Include
+  string  emp_formula_sort = 8;           //tinytext
+  string  emp_formula_source = 9;            //tinytext
+  double  mw = 10;           // double unsigned // Include
+  double  mw_monoiso = 11;           // double unsigned
+  double  rdb = 12;           // double unsigned
+  string  mw_source = 13   ;           // tinytext
+  string  validated_by = 14    ;           // text // Include
+  string  journal = 15   ;           // text
+  string  auth_of_intr = 16   ;           // text
+  string  jour_cit = 17   ;            //text // Include
+  string  year_publ = 18;           // text // Include
+  string  doi_link = 19 ;            //text
+  //??????  chemdraw           ;            //mediumblob
+  //???  xyz_coords            ;         //mediumblob
+  string  comp_class = 20 ;         //text // Include
+  string  cuniq = 21  ;         //text
+  string  calc_perf = 22   ;          //  text // Include //important link to 
comp db
+  string  org_met = 23  ;          //  text // Include
+  int64   mol_chrg = 24  ;         //int(11) // Include
+  string  state_ofmat = 25 ;         //   text // Include
+  string  color_white = 26  ;         //   text // Include
+  string  color_uv = 27;         //   text // Include
+  double  absorb_max = 28  ;         //   double 
+  string  solvent_ae = 29 ;         //   text. // Include
+  double  absorb = 30 ;         //   double
+  double  conc = 31 ;         //   double
+  double  extinc = 32 ;         //   double // Include
+  double  emis_max = 33  ;         //   double// Include
+  double  temp_abs = 34 ;         //   double // Include
+  double  emis_qy = 35 ;         //   double // Include
+  double  temp_ems = 36;         //   double // Include
+  double  lifetime = 37 ;         //   double // Include
+  double  temp_cv = 38 ;         //   double // Include
+  double  reduc_pot = 39 ;         //   double // Include
+  string  hw_or_pk_rp = 40 ;         // tinytext 
+  double  oxid_pot = 41;         //   double // Include
+  string  hw_or_pk_op = 42;         //   tinytext 
+  string  solvent_cv = 43;         //   text // Include
+  string  electrolyte = 44;         //   text // Include
+  string  ref_electrd = 45;         //   text // Include
+  string  inter_thngs = 46 ;         //   text 
+  double  density_20 = 47;         //   double
+  string  density_20_source = 48;         //   tinytext
+  double  default_warn_level = 49;           //double
+
+  double  n_20 = 50 ;          //double
+  string  n_20_source = 51;          // tinytext
+  double  mp_low = 52 ;           // double
+  double  mp_high = 53 ;           // double
+  string  mp_source = 54 ;           // tinytext
+  double  bp_low = 55 ;           // double
+  double  bp_high = 56 ;           // double
+  double  bp_press = 57 ;           // double
+  string  press_unit = 58  ;           // tinytext
+  string  bp_source = 59  ;           // tinytext
+  string  safety_r = 60 ;           // tinytext
+  string  safety_h = 61 ;           // tinytext
+  string  safety_s = 62 ;           // tinytext
+  string  safety_p = 63  ;           // tinytext
+  string  safety_text = 64 ;           // tinytext
+  string  safety_sym = 65 ;           // tinytext
+  string  safety_sym_ghs = 66 ;          //  tinytext
+  string  safety_source = 67;          //  tinytext
+  //???  gif_file              ;         //mediumblob
+  //??? svg_file               ;        //mediumblob
+  string  comment_mol = 68;       //     text
+}
+
+message MoleculeRequest{
+  string moleculeQuery = 1;
+  Molecule molecule=2;
+}
+
+service MoleculeService{
+  rpc GetMolecule(MoleculeRequest) returns (Molecule);
+  rpc CreateMolecule(MoleculeRequest) returns (Molecule);
+  rpc UpdateMolecule(MoleculeRequest) returns (Molecule);
+  rpc DeleteMolecule(MoleculeRequest) returns (Molecule);
+}
diff --git a/gsoc2022/smilesdb/Server/src/main/resources/application.properties 
b/gsoc2022/smilesdb/Server/src/main/resources/application.properties
new file mode 100644
index 00000000..84082450
--- /dev/null
+++ b/gsoc2022/smilesdb/Server/src/main/resources/application.properties
@@ -0,0 +1,2 @@
+spring.data.mongodb.uri=mongodb://localhost:27017/smiles
+spring.data.mongodb.database=smiles
diff --git 
a/gsoc2022/smilesdb/Server/src/test/java/com/smiles/ServerApplicationTests.java 
b/gsoc2022/smilesdb/Server/src/test/java/com/smiles/ServerApplicationTests.java
new file mode 100644
index 00000000..329f5e46
--- /dev/null
+++ 
b/gsoc2022/smilesdb/Server/src/test/java/com/smiles/ServerApplicationTests.java
@@ -0,0 +1,13 @@
+package com.smiles;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ServerApplicationTests {
+//
+//    @Test
+//    void contextLoads() {
+//    }
+
+}
diff --git 
a/gsoc2022/smilesdb/smiles_client/__pycache__/calc_info_pb2.cpython-38.pyc 
b/gsoc2022/smilesdb/smiles_client/__pycache__/calc_info_pb2.cpython-38.pyc
new file mode 100644
index 00000000..7d70f051
Binary files /dev/null and 
b/gsoc2022/smilesdb/smiles_client/__pycache__/calc_info_pb2.cpython-38.pyc 
differ
diff --git 
a/gsoc2022/smilesdb/smiles_client/__pycache__/calc_info_pb2_grpc.cpython-38.pyc 
b/gsoc2022/smilesdb/smiles_client/__pycache__/calc_info_pb2_grpc.cpython-38.pyc
new file mode 100644
index 00000000..3776d2a0
Binary files /dev/null and 
b/gsoc2022/smilesdb/smiles_client/__pycache__/calc_info_pb2_grpc.cpython-38.pyc 
differ
diff --git a/gsoc2022/smilesdb/smiles_client/calc_info_pb2.py 
b/gsoc2022/smilesdb/smiles_client/calc_info_pb2.py
new file mode 100644
index 00000000..37a1074a
--- /dev/null
+++ b/gsoc2022/smilesdb/smiles_client/calc_info_pb2.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: calc_info.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = 
_descriptor_pool.Default().AddSerializedFile(b'\n\x0f\x63\x61lc_info.proto\x12\ncom.smiles\"u\n\x08\x43\x61lcInfo\x12\x0e\n\x06nbasis\x18\x01
 \x01(\x03\x12\x0b\n\x03nmo\x18\x02 \x01(\x03\x12\x0e\n\x06nalpha\x18\x03 
\x01(\x03\x12\r\n\x05nbeta\x18\x04 \x01(\x03\x12\r\n\x05natom\x18\x05 
\x01(\x03\x12\x0e\n\x06\x65nergy\x18\x06 \x01(\x01\x12\x0e\n\x06SMILES\x18\x07 
\x01(\t\"P\n\x0f\x43\x61lcInfoRequest\x12\x15\n\rcalcInfoQuery\x18\x01 
\x01(\t\x12&\n\x08\x63\x61lcInfo\x18\x02 \x0 [...]
+
+
+
+_CALCINFO = DESCRIPTOR.message_types_by_name['CalcInfo']
+_CALCINFOREQUEST = DESCRIPTOR.message_types_by_name['CalcInfoRequest']
+CalcInfo = _reflection.GeneratedProtocolMessageType('CalcInfo', 
(_message.Message,), {
+  'DESCRIPTOR' : _CALCINFO,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:com.smiles.CalcInfo)
+  })
+_sym_db.RegisterMessage(CalcInfo)
+
+CalcInfoRequest = _reflection.GeneratedProtocolMessageType('CalcInfoRequest', 
(_message.Message,), {
+  'DESCRIPTOR' : _CALCINFOREQUEST,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:com.smiles.CalcInfoRequest)
+  })
+_sym_db.RegisterMessage(CalcInfoRequest)
+
+_CALCINFOSERVICE = DESCRIPTOR.services_by_name['CalcInfoService']
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  _CALCINFO._serialized_start=31
+  _CALCINFO._serialized_end=148
+  _CALCINFOREQUEST._serialized_start=150
+  _CALCINFOREQUEST._serialized_end=230
+  _CALCINFOSERVICE._serialized_start=233
+  _CALCINFOSERVICE._serialized_end=531
+# @@protoc_insertion_point(module_scope)
diff --git a/gsoc2022/smilesdb/smiles_client/calc_info_pb2_grpc.py 
b/gsoc2022/smilesdb/smiles_client/calc_info_pb2_grpc.py
new file mode 100644
index 00000000..dcb4a1b5
--- /dev/null
+++ b/gsoc2022/smilesdb/smiles_client/calc_info_pb2_grpc.py
@@ -0,0 +1,165 @@
+# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
+"""Client and server classes corresponding to protobuf-defined services."""
+import grpc
+
+import calc_info_pb2 as calc__info__pb2
+
+
+class CalcInfoServiceStub(object):
+    """Missing associated documentation comment in .proto file."""
+
+    def __init__(self, channel):
+        """Constructor.
+
+        Args:
+            channel: A grpc.Channel.
+        """
+        self.GetCalcInfo = channel.unary_unary(
+                '/com.smiles.CalcInfoService/GetCalcInfo',
+                
request_serializer=calc__info__pb2.CalcInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.CalcInfo.FromString,
+                )
+        self.CreateCalcInfo = channel.unary_unary(
+                '/com.smiles.CalcInfoService/CreateCalcInfo',
+                
request_serializer=calc__info__pb2.CalcInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.CalcInfo.FromString,
+                )
+        self.UpdateCalcInfo = channel.unary_unary(
+                '/com.smiles.CalcInfoService/UpdateCalcInfo',
+                
request_serializer=calc__info__pb2.CalcInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.CalcInfo.FromString,
+                )
+        self.DeleteCalcInfo = channel.unary_unary(
+                '/com.smiles.CalcInfoService/DeleteCalcInfo',
+                
request_serializer=calc__info__pb2.CalcInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.CalcInfo.FromString,
+                )
+
+
+class CalcInfoServiceServicer(object):
+    """Missing associated documentation comment in .proto file."""
+
+    def GetCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def CreateCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def UpdateCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def DeleteCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+
+def add_CalcInfoServiceServicer_to_server(servicer, server):
+    rpc_method_handlers = {
+            'GetCalcInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.GetCalcInfo,
+                    
request_deserializer=calc__info__pb2.CalcInfoRequest.FromString,
+                    
response_serializer=calc__info__pb2.CalcInfo.SerializeToString,
+            ),
+            'CreateCalcInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.CreateCalcInfo,
+                    
request_deserializer=calc__info__pb2.CalcInfoRequest.FromString,
+                    
response_serializer=calc__info__pb2.CalcInfo.SerializeToString,
+            ),
+            'UpdateCalcInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.UpdateCalcInfo,
+                    
request_deserializer=calc__info__pb2.CalcInfoRequest.FromString,
+                    
response_serializer=calc__info__pb2.CalcInfo.SerializeToString,
+            ),
+            'DeleteCalcInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.DeleteCalcInfo,
+                    
request_deserializer=calc__info__pb2.CalcInfoRequest.FromString,
+                    
response_serializer=calc__info__pb2.CalcInfo.SerializeToString,
+            ),
+    }
+    generic_handler = grpc.method_handlers_generic_handler(
+            'com.smiles.CalcInfoService', rpc_method_handlers)
+    server.add_generic_rpc_handlers((generic_handler,))
+
+
+ # This class is part of an EXPERIMENTAL API.
+class CalcInfoService(object):
+    """Missing associated documentation comment in .proto file."""
+
+    @staticmethod
+    def GetCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, 
'/com.smiles.CalcInfoService/GetCalcInfo',
+            calc__info__pb2.CalcInfoRequest.SerializeToString,
+            calc__info__pb2.CalcInfo.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, 
metadata)
+
+    @staticmethod
+    def CreateCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, 
'/com.smiles.CalcInfoService/CreateCalcInfo',
+            calc__info__pb2.CalcInfoRequest.SerializeToString,
+            calc__info__pb2.CalcInfo.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, 
metadata)
+
+    @staticmethod
+    def UpdateCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, 
'/com.smiles.CalcInfoService/UpdateCalcInfo',
+            calc__info__pb2.CalcInfoRequest.SerializeToString,
+            calc__info__pb2.CalcInfo.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, 
metadata)
+
+    @staticmethod
+    def DeleteCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, 
'/com.smiles.CalcInfoService/DeleteCalcInfo',
+            calc__info__pb2.CalcInfoRequest.SerializeToString,
+            calc__info__pb2.CalcInfo.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, 
metadata)
diff --git a/gsoc2022/smilesdb/smiles_client/main.py 
b/gsoc2022/smilesdb/smiles_client/main.py
new file mode 100644
index 00000000..1a492636
--- /dev/null
+++ b/gsoc2022/smilesdb/smiles_client/main.py
@@ -0,0 +1,56 @@
+import logging
+
+import grpc
+import calc_info_pb2
+import calc_info_pb2_grpc
+
+
+def ceateCalcInfo(channel):
+    stub = calc_info_pb2_grpc.CalcInfoServiceStub(channel)
+    response = 
stub.CreateCalcInfo(calc_info_pb2.CalcInfoRequest(calcInfoQuery="SAVE",
+                                                                 
calcInfo=calc_info_pb2.CalcInfo(nbasis=1002, nmo=1002,
+                                                                               
                  nalpha=1001,
+                                                                               
                  nbeta=1001, natom=1001,
+                                                                               
                  energy=1001,
+                                                                               
                  SMILES="TEST1001")))
+    print(response)
+    return
+
+
+def updateCalcInfo(channel):
+    stub = calc_info_pb2_grpc.CalcInfoServiceStub(channel)
+    response = 
stub.UpdateCalcInfo(calc_info_pb2.CalcInfoRequest(calcInfoQuery="UPD",
+                                                                 
calcInfo=calc_info_pb2.CalcInfo(nbasis=1001, nmo=1002,
+                                                                               
                  nalpha=1001,
+                                                                               
                  nbeta=1001, natom=1001,
+                                                                               
                  energy=1001,
+                                                                               
                  SMILES="TEST1001")))
+    print(response)
+    return
+
+
+def deleteCalcInfo(channel):
+    stub = calc_info_pb2_grpc.CalcInfoServiceStub(channel)
+    response = 
stub.DeleteCalcInfo(calc_info_pb2.CalcInfoRequest(calcInfoQuery="DEL",
+                                                                 
calcInfo=calc_info_pb2.CalcInfo(nbasis=1001, nmo=1003,
+                                                                               
                  nalpha=1001,
+                                                                               
                  nbeta=1001, natom=1001,
+                                                                               
                  energy=1001,
+                                                                               
                  SMILES="TEST1001")))
+    print(response)
+    return
+
+
+def run():
+    # NOTE(gRPC Python Team): .close() is possible on a channel and should be
+    # used in circumstances in which the with statement does not fit the needs
+    # of the code.
+    with grpc.insecure_channel('localhost:7594') as channel:
+        # ceateCalcInfo(channel)
+        # updateCalcInfo(channel)
+        # uncomment below line to run delete
+        deleteCalcInfo(channel)
+
+
+if __name__ == '__main__':
+    run()
diff --git a/gsoc2022/smilesdb/smiles_client/proto/calc_info.proto 
b/gsoc2022/smilesdb/smiles_client/proto/calc_info.proto
new file mode 100644
index 00000000..ab8acff2
--- /dev/null
+++ b/gsoc2022/smilesdb/smiles_client/proto/calc_info.proto
@@ -0,0 +1,40 @@
+syntax = "proto3";
+
+package com.smiles;
+
+message CalcInfo{
+  //QcSchema-Properties_Info
+  int64 nbasis = 1; // The number of basis functions for the computation.      
number
+  int64 nmo = 2; //    The number of molecular orbitals for the computation.   
number
+  int64 nalpha = 3;//  The number of alpha electrons in the computation.       
number
+  int64 nbeta = 4;//   The number of beta electrons in the computation.        
number
+  int64 natom = 5; //  The number of atoms in the computation.         number
+  double energy = 6;//         The energy of the requested method, identical 
to return_value for energy computations.  number
+  string SMILES =7;
+}
+
+message CalcInfoRequest {
+  string  calcInfoQuery=1;
+  CalcInfo calcInfo=2;
+}
+
+service CalcInfoService {
+  rpc GetCalcInfo(CalcInfoRequest) returns (CalcInfo) {}
+  rpc CreateCalcInfo(CalcInfoRequest) returns (CalcInfo){}
+  rpc UpdateCalcInfo(CalcInfoRequest) returns (CalcInfo){}
+  rpc DeleteCalcInfo(CalcInfoRequest) returns (CalcInfo){}
+}
+
+
+
+//python -m grpc_tools.protoc -I ./proto --python_out=. --grpc_python_out=. 
./proto/calc_info.proto
+
+
+
+
+
+
+
+
+
+

Reply via email to