We will try to separate the database access code from the business logic so we can roughly follow the model-view-controller paradigm.
To use MySQL in a Vibe.d app, we need to add an external library to our project, in this case, mysql-native (I wanted to use DDBC but DDBC doesn’t work on my Windows machine).
Create a new project named lorem .
Copy C:\vibeprojects\empapp>cd ..
C:\vibeprojects>dub init lorem -t vibe.d
...
C:\vibeprojects>cd lorem
C:\vibeprojects\lorem>
The easy, convenient and proper way to add the mysql-native library is to use dub .
Here is the present state of dub.json:
Copy {
"authors" : [
"Owner"
] ,
"copyright" : "Copyright © 2023, Owner" ,
"dependencies" : {
"vibe-d" : "~>0.9"
} ,
"description" : "A simple vibe.d server application." ,
"license" : "proprietary" ,
"name" : "empapp"
}
To add an external library or dependency, we type dub add
Copy c:\vibeprojects\empapp>dub add mysql-native
Adding dependency mysql-native ~>3.2.0
And here is the dub.json file after we added mysql-native :
Copy {
"authors" : [
"Owner"
] ,
"copyright" : "Copyright © 2023, Owner" ,
"dependencies" : {
"mysql-native" : "~>3.2.0" ,
"vibe-d" : "~>0.9"
} ,
"description" : "A simple vibe.d server application." ,
"license" : "proprietary" ,
"name" : "empapp"
}
Now we are ready to use MySQL in our project.
Let’s review source\app.d:
Copy import vibe.vibe;
import empcontrol;
void main ()
{
auto settings = new HTTPServerSettings;
settings.port = 8080 ;
settings.bindAddresses = [ "::1" , "127.0.0.1" ];
auto router = new URLRouter;
router.get ( "*" , serveStaticFiles ( "public/" ));
router.registerWebInterface ( new EmployeeController);
auto listener = listenHTTP (settings , router);
scope (exit) listener.stopListening ();
runApplication ();
}
Here we indicated that we are instantiating the EmployeeController class.