Port Not Available in Device Manager: Arduino Micro

So I've been using the arduino micro for the past month, and suddenly ran into this issue while trying to upload my code to my board. There are a couple of things:

  1. My device manager does not recognize the port for the arduino micro. I plug in anything else other than the micro and can establish a connection.
  2. When the arduino is plugged in, only the blue light is lit, and not the green one or any other light unless i reset it.
  3. When I do reset the board, it blinks for a couple of seconds and then goes out.

Honestly have no clue what's going on and whether I should buy another micro and how I can avoid this happening in the future

Due to the USB stack running on the same chip as your sketch with this board, it is possible for code in your sketch to break the USB functionality of the Pro Micro. Luckily, the upload code (bootloader) is stored in a separate section of memory and can not be broken by the sketch code. The only tricky thing is that the bootloader has to be activated at just the right time during the upload. Normally this is done by some special code that runs in the background of your sketch code recognizing a 1200 baud connection as the signal to reset the microcontroller and start the bootloader. However, in your current situation, that system wont work so you'll need to manually reset the board to activate the bootloader. Yyou need to get the timing right. If you press the reset button too early, the bootloader will have already timed out by the time the upload starts. The tricky thing is that when you press the "Upload" button in the Arduino IDE, it first compiles your sketch before starting the actual upload. So you need to wait until after the compilation finishes before pressing the reset button. The way to get the timing right is to watch the black console window at the bottom of the Arduino IDE window. As soon as you see something like this:

Sketch uses 444 bytes (1%) of program storage space. Maximum is 30720 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

press and release the reset button.