From d8af3a8a35afe970da8883cb89a35133ceea5ede Mon Sep 17 00:00:00 2001 From: kolaente Date: Fri, 7 Dec 2018 21:22:48 +0100 Subject: [PATCH] Added basic structure --- pkg/models/client.go | 31 +++++++++++++++++++++++++++++++ pkg/models/models.go | 7 ++++++- pkg/models/room.go | 30 ++++++++++++++++++++++++++++++ pkg/models/statistics.go | 30 ++++++++++++++++++++++++++++++ structure.md | 24 ++++++++++++++++++++++++ 5 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 pkg/models/client.go create mode 100644 pkg/models/room.go create mode 100644 pkg/models/statistics.go create mode 100644 structure.md diff --git a/pkg/models/client.go b/pkg/models/client.go new file mode 100644 index 0000000..54377a6 --- /dev/null +++ b/pkg/models/client.go @@ -0,0 +1,31 @@ +// Sofaraum server is the server which collects the statistics +// for the sofaraum-heatmap application. +// Copyright 2018 K.Langenberg and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package models + +type Client struct { + ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"` + Name string `xorm:"varchar(250)" json:"name"` + PublicKey string `xorm:"varchar(250)" json:"public_key"` + + Created int64 `xorm:"created" json:"created"` + Updated int64 `xorm:"updated" json:"updated"` +} + +func (Client) TableName() string { + return "clients" +} diff --git a/pkg/models/models.go b/pkg/models/models.go index c3a391b..8c351cd 100644 --- a/pkg/models/models.go +++ b/pkg/models/models.go @@ -58,7 +58,12 @@ func getEngine() (*xorm.Engine, error) { } func init() { - tables = append(tables) + tables = append(tables, + new(User), + new(Client), + new(Room), + new(Statistics), + ) } // SetEngine sets the xorm.Engine diff --git a/pkg/models/room.go b/pkg/models/room.go new file mode 100644 index 0000000..c618989 --- /dev/null +++ b/pkg/models/room.go @@ -0,0 +1,30 @@ +// Sofaraum server is the server which collects the statistics +// for the sofaraum-heatmap application. +// Copyright 2018 K.Langenberg and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package models + +type Room struct { + ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"` + Name string `xorm:"varchar(250)" json:"name"` + + Created int64 `xorm:"created" json:"created"` + Updated int64 `xorm:"updated" json:"updated"` +} + +func (Room) TableName() string { + return "rooms" +} diff --git a/pkg/models/statistics.go b/pkg/models/statistics.go new file mode 100644 index 0000000..6516497 --- /dev/null +++ b/pkg/models/statistics.go @@ -0,0 +1,30 @@ +// Sofaraum server is the server which collects the statistics +// for the sofaraum-heatmap application. +// Copyright 2018 K.Langenberg and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +package models + +type Statistics struct { + ID int64 `xorm:"int(11) autoincr not null unique pk" json:"id"` + Count int64 `xorm:"int(11)" json:"count"` + ClientID int64 `xorm:"int(11)" json:"-"` + RoomID int64 `xorm:"int(11)" json:"-"` + + Room Room `xorm:"-"` + Client Client `xorm:"-"` + + Created int64 `xorm:"created" json:"created"` +} diff --git a/structure.md b/structure.md new file mode 100644 index 0000000..4de27de --- /dev/null +++ b/structure.md @@ -0,0 +1,24 @@ +# . + +#### Structs + +* Users (Admins) + * Standard... +* Rooms + * ID + * Name +* Clients + * ID + * Name + * Pubkey +* Stats + * ID + * Count + * ClientID + * RoomID + +Client signiert seinen Request mit seinem Privaten Schlüssel und der Server verifiziert das dann. +Mit ed25519 + +Ein neuer Client wird registriert, indem er seinen pubkey mit name an den Server schickt +(hinter Authentifizierung). \ No newline at end of file