261 lines
3.3 KiB
V
261 lines
3.3 KiB
V
import sqlite
|
|
import mysql
|
|
import pg
|
|
|
|
[table: 'modules']
|
|
struct Module {
|
|
id int [primary; sql: serial]
|
|
name string
|
|
nr_downloads int [sql: u64]
|
|
creator User
|
|
}
|
|
|
|
struct User {
|
|
id int [primary; sql: serial]
|
|
age int [unique: 'user']
|
|
name string [sql: 'username'; unique]
|
|
is_customer bool [sql: 'abc'; unique: 'user']
|
|
skipped_string string [skip]
|
|
}
|
|
|
|
struct Parent {
|
|
id int [primary; sql: serial]
|
|
name string
|
|
children []Child [fkey: 'parent_id']
|
|
}
|
|
|
|
struct Child {
|
|
id int [primary; sql: serial]
|
|
parent_id int
|
|
name string
|
|
}
|
|
|
|
fn main() {
|
|
sqlite3_array()
|
|
mysql_array()
|
|
psql_array()
|
|
|
|
sqlite3()
|
|
mysql()
|
|
psql()
|
|
}
|
|
|
|
fn sqlite3_array() {
|
|
mut db := sqlite.connect(':memory:') or { panic(err) }
|
|
sql db {
|
|
create table Parent
|
|
}
|
|
|
|
par := Parent{
|
|
name: 'test'
|
|
children: [
|
|
Child{
|
|
name: 'abc'
|
|
},
|
|
Child{
|
|
name: 'def'
|
|
},
|
|
]
|
|
}
|
|
|
|
sql db {
|
|
insert par into Parent
|
|
}
|
|
|
|
parent := sql db {
|
|
select from Parent where id == 1
|
|
}
|
|
|
|
sql db {
|
|
drop table Child
|
|
drop table Parent
|
|
}
|
|
|
|
eprintln(parent)
|
|
}
|
|
|
|
fn mysql_array() {
|
|
mut db := mysql.Connection{
|
|
host: 'localhost'
|
|
port: 3306
|
|
username: 'root'
|
|
password: 'abc'
|
|
dbname: 'test'
|
|
}
|
|
db.connect() or { panic(err) }
|
|
|
|
sql db {
|
|
create table Parent
|
|
}
|
|
|
|
par := Parent{
|
|
name: 'test'
|
|
children: [
|
|
Child{
|
|
name: 'abc'
|
|
},
|
|
Child{
|
|
name: 'def'
|
|
},
|
|
]
|
|
}
|
|
|
|
sql db {
|
|
insert par into Parent
|
|
}
|
|
|
|
parent := sql db {
|
|
select from Parent where id == 1
|
|
}
|
|
|
|
eprintln(parent)
|
|
|
|
sql db {
|
|
drop table Child
|
|
drop table Parent
|
|
}
|
|
|
|
db.close()
|
|
}
|
|
|
|
fn psql_array() {
|
|
mut db := pg.connect(host: 'localhost', user: 'test', password: 'abc', dbname: 'test') or {
|
|
panic(err)
|
|
}
|
|
|
|
sql db {
|
|
create table Parent
|
|
}
|
|
|
|
par := Parent{
|
|
name: 'test'
|
|
children: [
|
|
Child{
|
|
name: 'abc'
|
|
},
|
|
Child{
|
|
name: 'def'
|
|
},
|
|
]
|
|
}
|
|
|
|
sql db {
|
|
insert par into Parent
|
|
}
|
|
|
|
parent := sql db {
|
|
select from Parent where id == 1
|
|
}
|
|
|
|
eprintln(parent)
|
|
|
|
sql db {
|
|
drop table Child
|
|
drop table Parent
|
|
}
|
|
|
|
db.close()
|
|
}
|
|
|
|
fn sqlite3() {
|
|
mut db := sqlite.connect(':memory:') or { panic(err) }
|
|
sql db {
|
|
create table Module
|
|
}
|
|
|
|
mod := Module{
|
|
name: 'test'
|
|
nr_downloads: 10
|
|
creator: User{
|
|
age: 21
|
|
name: 'VUser'
|
|
is_customer: true
|
|
}
|
|
}
|
|
sql db {
|
|
insert mod into Module
|
|
}
|
|
|
|
modul := sql db {
|
|
select from Module where id == 1
|
|
}
|
|
|
|
sql db {
|
|
drop table Module
|
|
}
|
|
|
|
eprintln(modul)
|
|
db.close() or { panic(err) }
|
|
}
|
|
|
|
fn mysql() {
|
|
mut conn := mysql.Connection{
|
|
host: 'localhost'
|
|
port: 3306
|
|
username: 'root'
|
|
password: 'abc'
|
|
dbname: 'test'
|
|
}
|
|
conn.connect() or { panic(err) }
|
|
|
|
sql conn {
|
|
create table Module
|
|
}
|
|
|
|
mod := Module{
|
|
name: 'test'
|
|
nr_downloads: 10
|
|
creator: User{
|
|
age: 21
|
|
name: 'VUser'
|
|
is_customer: true
|
|
}
|
|
}
|
|
|
|
sql conn {
|
|
insert mod into Module
|
|
}
|
|
|
|
m := sql conn {
|
|
select from Module where id == 1
|
|
}
|
|
|
|
eprintln(m)
|
|
conn.close()
|
|
}
|
|
|
|
fn psql() {
|
|
mut db := pg.connect(host: 'localhost', user: 'test', password: 'abc', dbname: 'test') or {
|
|
panic(err)
|
|
}
|
|
|
|
mod := Module{
|
|
name: 'test'
|
|
nr_downloads: 10
|
|
creator: User{
|
|
age: 21
|
|
name: 'VUser'
|
|
is_customer: true
|
|
}
|
|
}
|
|
|
|
sql db {
|
|
create table Module
|
|
}
|
|
|
|
sql db {
|
|
insert mod into Module
|
|
}
|
|
|
|
modul := sql db {
|
|
select from Module where id == 1
|
|
}
|
|
|
|
sql db {
|
|
drop table Module
|
|
}
|
|
|
|
eprintln(modul)
|
|
db.close()
|
|
}
|