pkgname="middleware-service"
pkgver="1.0.0"
pkgrel="1"
pkgdesc="Middleware service layer providing request/response handling and business logic"
arch=('x86_64')
license=('GPL-3.0')
maintainer="YAP Team <maintainer@yap.dev>"
url="https://github.com/example/middleware-service"

# Runtime dependency on foundation library
depends=('foundation-lib')

build() {
  # Create local foundation.h for build-time (since we can't access installed headers)
  cat > foundation.h << 'EOF'
#ifndef FOUNDATION_H
#define FOUNDATION_H
#include <stddef.h>
#define FOUNDATION_VERSION "1.0.0"
void foundation_init();
void foundation_log(const char* level, const char* message);
void* foundation_malloc(size_t size);
void foundation_free(void* ptr);
int foundation_string_compare(const char* str1, const char* str2);
#endif
EOF

  # Create middleware service implementation
  cat > middleware.c << 'EOF'
#include "foundation.h"
#include <stdio.h>
#include <string.h>

// Middleware service functions
void middleware_init() {
    foundation_init();
    foundation_log("INFO", "Middleware service initialized");
}

int middleware_process_request(const char* request_type, const char* data) {
    foundation_log("INFO", "Processing request");
    
    if (foundation_string_compare(request_type, "GET") == 0) {
        foundation_log("DEBUG", "Handling GET request");
        return 200;
    } else if (foundation_string_compare(request_type, "POST") == 0) {
        foundation_log("DEBUG", "Handling POST request");
        return 201;
    }
    
    foundation_log("WARN", "Unknown request type");
    return 400;
}

void middleware_cleanup() {
    foundation_log("INFO", "Middleware service shutting down");
}
EOF

  # Create header file
  cat > middleware.h << 'EOF'
#ifndef MIDDLEWARE_H
#define MIDDLEWARE_H

// Middleware service version
#define MIDDLEWARE_VERSION "1.0.0"

// Function declarations
void middleware_init();
int middleware_process_request(const char* request_type, const char* data);
void middleware_cleanup();

#endif // MIDDLEWARE_H
EOF

  # Compile as shared library
  gcc -fPIC -shared -o libmiddleware.so.1.0.0 middleware.c
  
  # Create symlinks
  rm -f libmiddleware.so.1 libmiddleware.so
  ln -s libmiddleware.so.1.0.0 libmiddleware.so.1
  ln -s libmiddleware.so.1 libmiddleware.so
}

package() {
  # Install shared library
  install -Dm755 libmiddleware.so.1.0.0 "$pkgdir/usr/lib/libmiddleware.so.1.0.0"
  ln -s libmiddleware.so.1.0.0 "$pkgdir/usr/lib/libmiddleware.so.1"
  ln -s libmiddleware.so.1 "$pkgdir/usr/lib/libmiddleware.so"
  
  # Install header files
  install -Dm644 middleware.h "$pkgdir/usr/include/middleware.h"
  
  # Install configuration
  mkdir -p "$pkgdir/etc/middleware"
  cat > "$pkgdir/etc/middleware/config.conf" << 'EOF'
# Middleware Service Configuration
[service]
port=8080
workers=4
timeout=30

[logging]
level=INFO
file=/var/log/middleware.log
EOF
}