diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d79957 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +data.sqlite \ No newline at end of file diff --git a/cmd/api/main.go b/cmd/api/main.go new file mode 100644 index 0000000..06ab7d0 --- /dev/null +++ b/cmd/api/main.go @@ -0,0 +1 @@ +package main diff --git a/data.sqlite-journal b/data.sqlite-journal new file mode 100644 index 0000000..d090de2 Binary files /dev/null and b/data.sqlite-journal differ diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..7b8bd80 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module vm-cbp + +go 1.21.6 diff --git a/sqlc.yaml b/sqlc.yaml new file mode 100644 index 0000000..bd30d95 --- /dev/null +++ b/sqlc.yaml @@ -0,0 +1,9 @@ +version: "2" +sql: + - engine: "sqlite" + queries: "vm/query.sql" + schema: "vm/schema.sql" + gen: + go: + package: "db" + out: "vm/db" \ No newline at end of file diff --git a/vm/db/db.go b/vm/db/db.go new file mode 100644 index 0000000..41b7a34 --- /dev/null +++ b/vm/db/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 + +package db + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/vm/db/models.go b/vm/db/models.go new file mode 100644 index 0000000..b48da56 --- /dev/null +++ b/vm/db/models.go @@ -0,0 +1,33 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 + +package db + +import ( + "database/sql" +) + +type Vm struct { + Id sql.NullInt64 + Name sql.NullString + Vcenter sql.NullString + CreationTime sql.NullString + DeletionTime sql.NullString + TinRpTime sql.NullFloat64 + BronzeRpTime sql.NullFloat64 + SilverRpTime sql.NullFloat64 + GoldRpTime sql.NullFloat64 + ResourcePool sql.NullString + VmType sql.NullString + PoweredOnPct sql.NullInt64 + Datacenter sql.NullString + Cluster sql.NullString + Folder sql.NullString + ProvisionedDisk sql.NullFloat64 + InitialVcpus sql.NullInt64 + AvgVcpus sql.NullFloat64 + InitialRam sql.NullInt64 + AvgRam sql.NullFloat64 + SrmPlaceholder sql.NullInt64 +} diff --git a/vm/db/query.sql.go b/vm/db/query.sql.go new file mode 100644 index 0000000..5142213 --- /dev/null +++ b/vm/db/query.sql.go @@ -0,0 +1,109 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 +// source: query.sql + +package db + +import ( + "context" + "database/sql" +) + +const create = `-- name: Create :execresult +insert into "vm" ( + "Name", "Vcenter" +) +values(?, ?) +` + +type CreateParams struct { + Name sql.NullString + Vcenter sql.NullString +} + +func (q *Queries) Create(ctx context.Context, arg CreateParams) (sql.Result, error) { + return q.db.ExecContext(ctx, create, arg.Name, arg.Vcenter) +} + +const get = `-- name: Get :one +select Id, Name, Vcenter, CreationTime, DeletionTime, TinRpTime, BronzeRpTime, SilverRpTime, GoldRpTime, ResourcePool, VmType, PoweredOnPct, Datacenter, Cluster, Folder, ProvisionedDisk, InitialVcpus, AvgVcpus, InitialRam, AvgRam, SrmPlaceholder from "vm" where "Name" = ? +` + +func (q *Queries) Get(ctx context.Context, name sql.NullString) (Vm, error) { + row := q.db.QueryRowContext(ctx, get, name) + var i Vm + err := row.Scan( + &i.Id, + &i.Name, + &i.Vcenter, + &i.CreationTime, + &i.DeletionTime, + &i.TinRpTime, + &i.BronzeRpTime, + &i.SilverRpTime, + &i.GoldRpTime, + &i.ResourcePool, + &i.VmType, + &i.PoweredOnPct, + &i.Datacenter, + &i.Cluster, + &i.Folder, + &i.ProvisionedDisk, + &i.InitialVcpus, + &i.AvgVcpus, + &i.InitialRam, + &i.AvgRam, + &i.SrmPlaceholder, + ) + return i, err +} + +const list = `-- name: List :many +select Id, Name, Vcenter, CreationTime, DeletionTime, TinRpTime, BronzeRpTime, SilverRpTime, GoldRpTime, ResourcePool, VmType, PoweredOnPct, Datacenter, Cluster, Folder, ProvisionedDisk, InitialVcpus, AvgVcpus, InitialRam, AvgRam, SrmPlaceholder from "vm" order by "Name" +` + +func (q *Queries) List(ctx context.Context) ([]Vm, error) { + rows, err := q.db.QueryContext(ctx, list) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Vm + for rows.Next() { + var i Vm + if err := rows.Scan( + &i.Id, + &i.Name, + &i.Vcenter, + &i.CreationTime, + &i.DeletionTime, + &i.TinRpTime, + &i.BronzeRpTime, + &i.SilverRpTime, + &i.GoldRpTime, + &i.ResourcePool, + &i.VmType, + &i.PoweredOnPct, + &i.Datacenter, + &i.Cluster, + &i.Folder, + &i.ProvisionedDisk, + &i.InitialVcpus, + &i.AvgVcpus, + &i.InitialRam, + &i.AvgRam, + &i.SrmPlaceholder, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/vm/query.sql b/vm/query.sql new file mode 100644 index 0000000..f6e8294 --- /dev/null +++ b/vm/query.sql @@ -0,0 +1,11 @@ +-- name: Get :one +select * from "vm" where "Name" = ?; + +-- name: List :many +select * from "vm" order by "Name"; + +-- name: Create :execresult +insert into "vm" ( + "Name", "Vcenter" +) +values(?, ?); \ No newline at end of file diff --git a/vm/schema.sql b/vm/schema.sql new file mode 100644 index 0000000..6f58278 --- /dev/null +++ b/vm/schema.sql @@ -0,0 +1,23 @@ +CREATE TABLE IF NOT EXISTS "vm" ( + "Id" INTEGER UNIQUE, + "Name" TEXT, + "Vcenter" TEXT, + "CreationTime" TEXT, + "DeletionTime" TEXT, + "TinRpTime" REAL, + "BronzeRpTime" REAL, + "SilverRpTime" REAL, + "GoldRpTime" REAL, + "ResourcePool" TEXT, + "VmType" TEXT, + "PoweredOnPct" INTEGER, + "Datacenter" TEXT, + "Cluster" TEXT, + "Folder" TEXT, + "ProvisionedDisk" REAL, + "InitialVcpus" INTEGER, + "AvgVcpus" REAL, + "InitialRam" INTEGER, + "AvgRam" REAL, + "SrmPlaceholder" INTEGER +); \ No newline at end of file diff --git a/vm/service.go b/vm/service.go new file mode 100644 index 0000000..830a8f6 --- /dev/null +++ b/vm/service.go @@ -0,0 +1 @@ +package vm