mirror of
https://github.com/m1k1o/neko-rooms.git
synced 2026-11-03 07:01:35 -06:00
add get by name func.
This commit is contained in:
@@ -74,11 +74,8 @@ func (manager *RoomManagerCtx) listContainers() ([]dockerTypes.Container, error)
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (manager *RoomManagerCtx) containerInfo(id string) (*dockerTypes.Container, error) {
|
||||
args := filters.NewArgs(
|
||||
filters.Arg("id", id),
|
||||
filters.Arg("label", "m1k1o.neko_rooms.instance"),
|
||||
)
|
||||
func (manager *RoomManagerCtx) containerFilter(args filters.Args) (*dockerTypes.Container, error) {
|
||||
args.Add("label", "m1k1o.neko_rooms.instance")
|
||||
|
||||
containers, err := manager.client.ContainerList(context.Background(), dockerTypes.ContainerListOptions{
|
||||
All: true,
|
||||
@@ -103,6 +100,18 @@ func (manager *RoomManagerCtx) containerInfo(id string) (*dockerTypes.Container,
|
||||
return &container, nil
|
||||
}
|
||||
|
||||
func (manager *RoomManagerCtx) containerById(id string) (*dockerTypes.Container, error) {
|
||||
return manager.containerFilter(filters.NewArgs(
|
||||
filters.Arg("id", id),
|
||||
))
|
||||
}
|
||||
|
||||
func (manager *RoomManagerCtx) containerByName(name string) (*dockerTypes.Container, error) {
|
||||
return manager.containerFilter(filters.NewArgs(
|
||||
filters.Arg("name", manager.config.InstanceName+"-"+name),
|
||||
))
|
||||
}
|
||||
|
||||
func (manager *RoomManagerCtx) inspectContainer(id string) (*dockerTypes.ContainerJSON, error) {
|
||||
container, err := manager.client.ContainerInspect(context.Background(), id)
|
||||
if err != nil {
|
||||
|
||||
@@ -73,6 +73,15 @@ func (manager *RoomManagerCtx) List() ([]types.RoomEntry, error) {
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (manager *RoomManagerCtx) FindByName(name string) (*types.RoomEntry, error) {
|
||||
container, err := manager.containerByName(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return manager.containerToEntry(*container)
|
||||
}
|
||||
|
||||
func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, error) {
|
||||
if in, _ := utils.ArrayIn(settings.NekoImage, manager.config.NekoImages); !in {
|
||||
return "", fmt.Errorf("invalid neko image")
|
||||
@@ -220,7 +229,7 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro
|
||||
}
|
||||
|
||||
func (manager *RoomManagerCtx) GetEntry(id string) (*types.RoomEntry, error) {
|
||||
container, err := manager.containerInfo(id)
|
||||
container, err := manager.containerById(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -163,6 +163,7 @@ type RoomMember struct {
|
||||
type RoomManager interface {
|
||||
Config() RoomsConfig
|
||||
List() ([]RoomEntry, error)
|
||||
FindByName(name string) (*RoomEntry, error)
|
||||
|
||||
Create(settings RoomSettings) (string, error)
|
||||
GetEntry(id string) (*RoomEntry, error)
|
||||
|
||||
Reference in New Issue
Block a user